home *** CD-ROM | disk | FTP | other *** search
/ Risc World Words - Complete RISC World 1 to 6 / Risc World Words - Complete RISC World 1 to 6.iso / HTML / VOLUME1 / ISSUE7 / TEXT < prev   
Text File  |  2006-03-20  |  204KB  |  1,777 lines

  1.  
  2. ÿÿÿÿVOLUME1/ISSUE7/ARCHIE/INDEX.HTM Volume 1, Issue 7, Archie for Windows
  3.  
  4.  
  5.  
  6.  
  7. Archie for Windows
  8. Aaron turns his PC into a RISC OS machine
  9. Archie is an emulator of RISC OS. As I am sure everyone is aware there are plenty of emulators that run under RISC OS and turn your beloved computer into something else, however Archie is different, it runs on a Windows PC and turn that into a RISC OS computer with up to 16Mb of RAM.
  10. Yes, thats right, you can now run RISC OS on a Windows PC. The implications of Archie are truly amazing. Suppose you needed a portable RISC OS machine, you could get a Windows portable and run Archie. The result won't be as quick as a true RISC OS portable, but you can do it now!
  11. What is Archie?
  12. Archie emulates an Acorn A4xx machine with a few changes. It supports up to 16MB of RAM by emulating up to four MEMC chips, it can read old images of floppy disks, and incorporates its own filing system PCFS, which is compatible with ADFS. However unlike ADFS, PCFS can store as may files as you like using your PCs own internal hard drive. Archie can also read ADFS D or E format 800K floppy disks using the PCs own floppy disk drive.
  13. Archie
  14. Archie will run almost any software you throw at it, provided of course the software in question will work on RISC OS 3.11. As an example the copy of Archie on this CD also includes a fully working version of Impression Junior. You could also run your old software that no longer works on a RISC PC or you could use Archie as a 2nd RISC OS machine. The emulation of Archie is so good that you can even use it to test compatibility of software you are writing now, to ensure it works on older machines.
  15. On the CD
  16. Supplied on this months CD is a full version of Archie. However rather than just download a copy from the internet and bung it on a CD we have customized is somewhat. This version includes the RISC OS 3.1 application disks (supplied under the licence owned by APDL). It also auto boots so that the special PCFS filing system is run and the !System and !Scrap directories are set up. Getting Archie to auto boot correctly can make you tear your hair out. So we have done the hard work for you.
  17. However we havent included one vital ingredient, the RISC OS 3.11 ROMS. Simply because we cant, if you own a RISC OS 3.11 machine you could save the ROMS to disk and then install them into Archie yourself. In order to do this you will need to follow these instructions:
  18. Format a 720k DOS disk on your PC by typing format a: /f:720 from a DOS prompt
  19. Put the disk in your Archimedes and from the command line type save :0.ic24/rom 3800000 3880000m, press Return, and then type dismount
  20. Remove the disk and move the file to the Archie directory on your PC
  21.  Go back to (b) for the following command lines, and you should be finished!
  22.  
  23. save :0.ic25/rom 3880000 3900000 
  24.                              
  25. save :0.ic26/rom 3900000 3980000 
  26.  
  27. save :0.ic27/rom 3980000 3A00000 
  28.  
  29.  
  30.  
  31. Of course you might decide to save yourself some time and simply download a copy of the ROMS from the internet. If so then please note that you should legally own a copy of RISC OS 3.11 to do so. Download the RISCOS 3.11 roms from the internet here.
  32. You will need to extract the contents of the ARCHIE.ZIP file inside DiscWorld to the hard drive of your PC, dont bother trying to open the archive under RISC OS as the contents will not be of very much use! Once you have installed Archie from the ZIP file and added the ROM images inside the Archie directory you will be able to run RISC OS on your PC. Simply double click on the Archie application, then click OK on the Archie configuration window (we have set the correct settings for you) and away you go!
  33. P.S. To exit Archie and return to the configuration window at any point simply press CTRL and END at the same time.
  34. Useful Archie Links
  35. Archie Home Page
  36.  
  37. Archie game Emulation Webpage
  38.  
  39. Big Al's Archie Page
  40.  
  41. Acorn Antiques
  42.  
  43. Aaron Timbrell
  44.  
  45.  
  46. ÿÿÿÿVOLUME1/ISSUE7/ARMCODE/INDEX.HTM Volume 1, Issue 7, ARM code for Beginners
  47.  
  48.  
  49.  
  50.  
  51. ARM code for Beginners
  52. Part 4: More on SWI routines and Memory useage.
  53. Brain Pickard explains how anyone can program in ARM code.
  54. Solutions to Part 3 problems.
  55. Show the BASIC programming listing to produce a two pass assembler which does not check errors on the first pass and never produces a listing. When would these settings be used?
  56. The values for OPT is 0 (zero) and 2. So the listing would be:
  57.      DIM mcode% 12
  58.      FOR pass%=0 TO 2 STEP
  59.      P%=mcode
  60.      [
  61.      OPT pass
  62.      
  63.      
  64.      
  65.      NEX
  66.  
  67. These settings for OPT are useful when all the debugging has been done. An assembly listing would mess up any screen.
  68. Find the faults in the following assembler code.
  69. The 8 faults are marked as follows.
  70.      DIM mcode% 128   ;this does not reserve enough memor
  71.                       ;(add up the message lengths
  72.      FOR pass%=2 TO 3 ;the loop is allowing errors to be detecte
  73.                       ;in BOTH passes
  74.                       ;This should be FOR pass%=0 TO 3 STEP 
  75.      P%=mcode
  76.      
  77.      OPT P%           ;this is the wrong variable should be pass
  78.      ADR R0,message
  79.      SWI “OS_Write0
  80.      SWI “OS_NewLine
  81.      .message
  82.      EQUW “This routine has several errors
  83.                       ;this is a string so should use EQU
  84.      EQUS “ some quite simple but others might not be so
  85.      EQUS “ obvious to the beginner
  86.                       ;Two extra lines required her
  87.      EQUB 0           ;this is the zero byte marker for SWI "OS_Write0
  88.      ALIGN            ;required since we are not on a word boundar
  89.                       ;at this point (count up message chrs
  90.                       ;is the answer divisible by four?
  91.      ADR R0,message2
  92.      SWI “OS_Write0
  93.      SWI “OS_NewLine
  94.                       ;Extra line required her
  95.      MOV PC,R14       ;this is to return to BASI
  96.      .message2
  97.      EQUS “Have you found all 8 errors?
  98.      EQUB 
  99.      
  100.      NEX
  101.  
  102. The eighth fault is between the first SWI "OS_NewLine" and .message%. We must branch to the ADR R0,message2% line OR better still place ALL the data together in one block after the MOV PC,R14.
  103. Write a routine in ARM code that will print out the message ‘Enter your full name ’, then allow the user to type their name, checking for the beginning of each name for an uppercase letter and corrects the letter if the need, displaying the correct version.
  104. The following will do the job but does not allow the use of the delete key (more on input in a later article)
  105.      MODE 2
  106.      DIM mcode% 102
  107.      FOR pass%=0 TO 3 STEP
  108.      P%=mcode
  109.      
  110.      OPT pass
  111.      ADR R0,message%     ; load R0 with memory position message% t
  112.      SWI “OS_Write0”     ; to print ou
  113.      MOV R5,#1           ; a flag used for case changing 0=change uppe
  114.                          ; to lower, 1= change lower to uppe
  115.      .inputlp
  116.      SWI “OS_ReadC”      ; get chr from keyboar
  117.      CMP R0,#13          ;is it return if so the
  118.      MOVEQ PC,R14        ; get out of routine (back to BASIC
  119.      CMP R0,#32          ; is it spac
  120.      CMPNE R0,#ASC(“.”)  ; or is it a period (full stop
  121.      BEQ space%          ;if so branch to space
  122.      CMP R0,#ASC(“A”)    ;is it a legal chr i.e. A to 
  123.      BLT inputlp%        ;if below A then get another ch
  124.      CMP R0,#ASC(“Z”
  125.      BLE uppercase%      ;if  A up to Z then branch to uppercase%
  126.      CMP R0,#ASC(“a”)    ;is it a legal lowercase lette
  127.      BLT inputlp
  128.      CMP R0,#ASC(“z”
  129.      BLE lowercase%      ; if a to z then branch to lowercase
  130.      B inputlp%          ; if not a legal chr just get another ch
  131.      .space
  132.      MOV R5,#1           ; reset flag for changing cas
  133.      SWI “OS_WriteC”     ; write the chr to the scree
  134.      B inputlp%          ;get another ch
  135.      .uppercase
  136.      CMP R5,#0           ;check if case changing require
  137.      ADDEQ R0,R0,#32     ;if zero this should be lowercase so add 32 to AS
  138.      SWI “OS_WriteC”     ;write chr to scree
  139.      MOV R5,#0           ;reset flag for next ch
  140.      B inputlp%          ;get next ch
  141.      .lowercase
  142.      CMP R5,#0           ;check if case changing require
  143.      SUBNE R0,R0,#32     ;if not zero this should be uppercase so subtrac
  144.      SWI “OS_WriteC”     ;write chr to scree
  145.      MOV R5,#0           ;reset fla
  146.      B inputlp%          ; get another ch
  147.      .message
  148.      EQUS “Enter your full name 
  149.      EQUB 
  150.      ALIG
  151.      
  152.      NEX
  153.      CALL mcode
  154.  
  155. Note the use of ; in the listing this stands for REM in assembly. This problem shows the use of a user defined flag. This is a useful technique to check for conditions in ARM programs.
  156. More SWI's
  157. There are hundreds if not thousands of SWI's the programmer can use, some more useful than others so lets have a look at some of them.
  158. OS_Byte
  159.  
  160. This SWI is a hang over from the BBC computer but still has some uses. There are 256 different routines. The number of the OS_Byte routine required is placed in R0, then depending on the routine R1 and R2 have to be setup. E.g. OS_Byte 0 This just prints out the version of RiscOS in your computer and is equivalent to *FX 0.
  161.      MOV R0,#
  162.      SWI "OS_Byte
  163.  
  164. OS_CLI
  165.  
  166. This is equivalent to BASIC's OSCLI command and is useful to execute any legal star (*) command. R0 points to the star command (and data) string, terminating in a null byte. E.g. Output the System$Dir and System$Path variables.
  167.      
  168.      ADR R0,command
  169.      SWI "OS_CLI
  170.      MOV PC,R1
  171.      
  172.      
  173.      
  174.      .command
  175.      EQUS"Show System*
  176.      EQUB 
  177.      ALIG
  178.      
  179.  
  180. OS_ReadVarVal
  181.  
  182. If you wish to find the contents of a system variable (e.g. a filepath etc.) then make R0 point to the system variable name and R1 to point to a buffer to receive the data. R2 = maximum length of the buffer. R3 = 0. R4 = 3. This is a powerful call for more details see the PRM's etc.
  183.      
  184.      ADR R0,varname
  185.      ADR R1,buffer
  186.      MOV R2,#1
  187.      MOV R3,#
  188.      MOV R4,#
  189.      SWI "OS_ReadVarVal
  190.      MOV PC,R1
  191.      
  192.      
  193.      
  194.      .varname
  195.      EQUS"File$Type_FF9
  196.      EQUB 
  197.      ALIG
  198.      .buffer
  199.      EQUD 
  200.      EQUD 
  201.      EQUD 
  202.      
  203.  
  204. In the examples the MOV PC,R14 command is included if you wish to tryout the routine.
  205. Coping with SWI Errors.
  206. Even though we like to think we are capable of producing perfect programs there is always the need to allow for unforeseen circumstances.
  207. What happens if we do not allow enough space for the data to fit in the buffer in the last example?
  208. We do not get an assembler error since the routine is correct within itself. Instead an error will occur when the routine is run. This type of error is known as a run time error. What makes the situation even worse is we are not in a friendly environment, like BASIC, when the routine is running, so any error message will not be helpful and the computer could easily crash. Clearly we need a method of coding which will not upset the running of the ARM code but will still give the programmer a method of detecting and therefore allow for an error at run time. Luckily the designers of RISC OS have thought of this and provide a method of calling SWI's to allow for errors.
  209. Using an X in the name
  210. We can call SWI's, by name, as previously but with an X before the name thus:
  211.      SWI"XOS_CLI" etc
  212.  
  213. When this is done RiscOS will not try and generate a run time error but will set the overflow flag to tell the programmer an error has been generated during the execution of the SWI. We can test to see if this flag has been set and take appropriate action.
  214.      
  215.      ADR R0,command
  216.      SWI"XOS_CLI
  217.      BVC exit
  218.      ADR R0,errormessage
  219.      SWI"OS_Write0
  220.      SWI"OS_NewLine
  221.      .exit
  222.      MOV PC,R1
  223.      .command
  224.      EQUS"rubbish
  225.      EQUB 
  226.      ALIG
  227.      .errormessage
  228.      EQUS"There is no such command
  229.      EQUB 
  230.      ALIG
  231.      
  232.  
  233. It is always best to use the X version of the name. I will deal with run time errors in more detail in a later article.
  234. Storing and Loading data in Memory
  235. At this point I would like to return to the use of memory within ARM code routines.
  236. Loading data from memory.
  237.  
  238. Using the MOV command and an immediate operand the maximum value that could be loaded into a register was 4096. So how could we get a value greater than this into a register?
  239. There is a LoaD Register (LDR) command which can be used to load data from memory locations.
  240. Load data from a single Location
  241.  
  242. Syntax: LDR reg,memloc%
  243.  
  244. E.g. LDR R0,data% where data% is a memory address label.
  245.  
  246. This is known as PC relative memory addressing.
  247. There is a limit of 4096 bytes the memory address can be from the instruction. This is due to the instruction and memory address data having to fit into the 32 bit ARM command word. To overcome this restriction LDR command can be used in different ways. Each way is called an addressing mode.
  248. Indirect Addressing
  249.  
  250. This uses a register to specify the memory address. This addressing register can therefore contain any position in memory. When the ARM code program is run the value in the addressing register is looked up, which means the program can define which memory address it requires since the memory address is not fixed in the instruction.
  251. E.g. If R2 was being used as the addressing register and contained the number 1024 then the data at memory address 1024 would be loaded. (See below).
  252. The ARM instruction that would load R0 with the data would be LDR R0,[R2]. ARM machine code supports enhanced indirect addressing.
  253. Pre-indexed Addressing
  254.  
  255. In this mode an offset is added to the above giving a general syntax:
  256.      LDR destination_reg, [ basereg , offset 
  257.  
  258. The offset can be an immediate, register or shifted (see later article) operand thus:
  259.      LDR R0,[R2,R1]   or  LDR R0,[R2,#12
  260.  
  261. Here the data would be loaded from memory address equal to R2+R1 (or R2+12) i.e. basereg+offset. The offset, when an immediate operand, must be in the range -4096 to 4096. Using the same example the data this time would be loaded from address 1036 thus:
  262. Write Back
  263.  
  264. Placing a '!' suffix, makes the instruction add the offset to the value in the basereg after loading the data. E.g.
  265. LDR R0,[R1,#4]!
  266.  
  267. loads R0 with data from memory address R1+4 then R1 becomes R1+4
  268. This is useful if a data table is set up in memory as after each loading R1 will point to the next memory address.
  269. Post-indexed Addressing
  270.  
  271. This is similar to pre-indexed addressing but the instruction has built in write back.
  272. LDR R0,[R1],R2
  273.  
  274. would load data from memory address in R1 then R1 is updated to R1+R2
  275. Using the same memory map as previously:
  276.  
  277.      LDR R0,[R2],R1
  278.  
  279. would read data from address 1024 then R2 would become 1036.
  280. To load a table from memory use LDR R0,[R1],#4
  281. So far we have read a word of data (32 bits). If only byte values are required then a B suffix can be added to the instructions thus:
  282.      LDRB R0,[R1,R2
  283.      LDRB R0,[R1],R
  284.  
  285. Note the B suffix is added after any conditional suffices thus:
  286.      LDRNEB R0,[R1,R2
  287.  
  288. This instruction would only be executed if the zero flag is set.
  289. All the different address modes work when storing data to memory using the STR instruction.
  290.      STR R0,memaddr%    :REM store contents of R0 to memaddr% (one word of memory
  291.      STR R0,[R2,R1]     :REM store contents of R0 at address R2+R
  292.      STR R0,[R2,#4]     :REM store contents of R0 at address R2+
  293.      STRB R0,[R2,R1]    :REM store byte value of R0 at address R2+R
  294.      STR R0,[R2,#4]!    :REM store contents of R0 at address R2+4, R2 becomes R2+
  295.      STRNEB R0,[R1],R2  :REM store contents of R0 at address R1, R1 becomes R1+R
  296.  
  297. All the above would store the contents of R0 in the memory address specified by basereg and offset using the same rules for pre or post indexing.
  298. Setting up a block of memory using a macro assembler routine
  299. Sometimes setting up a block of memory with a table of values during assembly can speed up the ARM code program. The following example shows what is involved.
  300. Plotting Sine waves.
  301. These could take quite a bit of processing if the values had to be calculated during the plotting. Luckily, using BASIC within the assembler, a block of memory can be setup. This block is then used repeatedly for each plot.
  302. To setup a block, construct a function which will work out the required values.
  303.      DEF FNsine(a%,p%
  304.        
  305.        EQUD INT(240*SIN(RAD(a%))
  306.        
  307.      =p
  308.  
  309. Since we are only dealing with integers at this stage the value returned is 240 times the sine of the angle. Inside the assembler the following can be constructed.
  310.      
  311.      .sinetable
  312.      
  313.      FOR angle%=0 TO 35
  314.      
  315.      OPT FNsine(angle%,pass%
  316.      
  317.      NEX
  318.      
  319.      OPT pass
  320.      
  321.      
  322.  
  323. The function used in this way is called a macro and the whole process macro assembling.
  324. During assembling we leave the assembler after the label sinetable%. We can now use a FOR NEXT loop to repeat a section. In this example the loop repeats 360 times, hence 360 words (360*4=1440 bytes)  of memory will be used. We then enter the assembler in each repeat of the loop. We can use a BASIC function command inside the assembler. The assembler will jump to the start of the definition for the function. In the function we enter the assembler use the EQUD directive to reserve a word of memory and store the required value in the word using the BASIC functions as shown. We then leave the assembler and then leave the function, which returns the assembler back to the the loop. The value our FNsine returns is the pass value for the assembler. Here we leave the assembler to execute the NEXT command. The whole process then repeats, hence building up the table.
  325. Using this method the BASIC program is more compact. The complete BASIC program called SineWaves which produces a set of sine waves is included on the disc. This program produces a sine wave that moves down the screen. A total of 32*360=11520 plots are executed!
  326. Well thats it for this time. Next time I will take a look at the use of stacks and sub routines.
  327. Some problems
  328. Write an ARM routine using a lookup table to produce the answer to the (cube-square) of any integer from 1 to 256
  329. Write a routine to input a set of 10 positive integers storing them in memory, and then printing them out. You can use BASIC for inputting, printing and ARM code for storing in memory
  330. Write a routine which will allow a user to enter a password. Each key press should produce a * on the screen. The password should then be checked against one already in memory and if correct a beep should be heard. The password should be case insensitive and at least 10 characters long. (Hint there are a set of SWI's which output single characters: SWI256+42 will output a "*" and a beep is SWI256+7)
  331.  
  332. Brain Pickard
  333.  
  334.  
  335. ÿÿÿÿVOLUME1/ISSUE7/BEGINPRG/INDEX.HTM Volume 1, Issue 7, Programming for non programmers
  336.  
  337.  
  338.  
  339.  
  340. Programming for non programmers
  341. Part 7 - Working with the Wimp
  342. David Holden continues his series.
  343. So far you should have learned how to write simple programs in Basic, and we could continue to improve these skills and produce more complex and sophisticated applications, but if you want to write 'real' programs then that means learning to operate in the multi-tasking desktop environment. The method described in the last part, running a program in a Taskwindow, is not really good enough.
  344. This is the point at which so many people give up. They may have learned to program on a BBC computer and perhaps write non-desktop programs in the early days of the Archimedes before RISC OS appeared, but they have never made the jump to writing desktop applications.
  345. Don't be put off. It's not difficult, really it's not. If you have followed this series until now you have already learned all the important things you need to know. Everything else is just applying that knowledge plus a basic understanding of the way the Wimp works. There is nothing magical about it, and no massive mountain to climb before you can get even the simplest program to run. You just need to understand how the 'system' works.
  346. In this session I shall describe in general terms how a multi tasking Wimp program 'works'. We wont go into any specific programming details, but in the next session we will put this overview together with some straightforward code to produce a 'real' Wimp program.
  347. A multi-tasking environment
  348. The most important difference between a single-tasking program like the ones we have written so far and a Wimp program is that a Wimp program has to co-exist with others. It cant PRINT directly to the screen or get user input via INPUT because it has to share the screen, keyboard, mouse, and all the rest of the hardware with other programs. All input and output therefore has to be channelled via SWI calls to the Wimp or Operating System. As you might expect, there are lots of special SWI's to do this.
  349. The method used by the RISC OS desktop to manage all these programs is highly complex, but from the point of view of each individual program it's quite straightforward. When it starts up the program 'registers' itself with the Wimp and is given a unique number or task handle. This unique ID allows the program to communicate with the Wimp and with other programs, as we saw in the last part of the series.
  350.  
  351. With lots of programs and one set of hardware there has to be some way of dividing it between them, letting each program in turn do some work. There are various methods of achieving this but they fall into two main types. One allocates each task a proportion of the processing time and then leaves it  and moves on to the next, the other goes to each task in turn and lets it have as much (or as little) time as it needs. This isnt the place to discuss the merits of the two systems, they each have good and bad points. The important fact is that RISC OS uses the second method.
  352. Once a program is installed and has registered itself with the Wimp it repeatedly calls a SWI called Wimp_Poll. This passes control from the program to the Wimp. During this period the Wimp can carry out all the other work it has to do, like redrawing windows, checking for keyboard input and mouse button clicks, etc. and, of course, giving all the other applications their chance to do some work. When the Wimp_Poll SWI comes back to the program it will return various information about all the things that have happened since the last time it was there; what keys or mouse buttons were pressed, whether anything has happened with any of the program's windows or icons, if there are any messages from any of the other programs or the OS, and much more.
  353.  
  354. It is then up to the program to decide what, if anything, it needs to do, and then, having done whatever is necessary (or nothing, if that is what is required) call Wimp_Poll again and the cycle repeats.
  355. As you can imagine, with several tasks running the Wimp actually works on a 'round robin' system, so each task is called in turn. When Wimp_Poll returns the program once again has (effectively) complete control of the computer. In the normal course of events it will retain this control until it calls Wimp_Poll again, so the program can take as much time as it needs. In reality it should take only the absolute minimum of time, as until it calls Wimp_Poll again all other programs are 'shut out', so, to the user, the computer will appear to 'freeze'. Of course, this would normally only be a fraction of a second, so on a Strong ARM computer with well written programs there might be two or three hundred Wimp_Polls per second. To the user things will appear to happen immediately. That key you pressed may have been 'offered' to several other tasks before the program that, to you, was the 'only' one that should have been taking an interest gets to hear about it, but to an unbelievably sluggish human the response will appear instantaneous.
  356. Things that can be done quickly should therefore be done during a single poll, but anything that will take longer should be split up into chunks so that Wimp_Poll can be called while the program is working. This allows other programs to get a look­in and the user wont feel that that something has gone wrong.
  357. There has to be some way for the Wimp to return data to a program and this is done both in the registers and in in a block of RAM. When you call Wimp_Poll you must put a pointer to a suitable block of RAM in R1. This RAM, of course, must be somewhere in your program's workspace. It doesnt need to be very big, the Wimp message system can only deal with 256 bytes of data.
  358. To avoid the Wimp including your program in its round­robin of Wimp_Poll 'returns' you can set a mask when you call it. This is placed in R0 and tells the Wimp which type of events your program is not interested in. This is important, because if the Wimp has to poll every application even when nothing of interest to that application has happened it will be wasting a great deal of time so other programs will have less time to work and the desktop will run at a snail's pace. However, we shall leave this for the moment.
  359. When Wimp_Poll returns control to the program R1 will still contain the pointer to the data block but R0 will hold the event code. What your program does and the contents of the data block will depend upon this event code. The codes returned are:
  360.   0      Null (ie. do nothing
  361.   1      Redraw Window reques
  362.   2      Open Window reques
  363.   3      Close Window reques
  364.   4      Mouse pointer leaving windo
  365.   5      Mouse pointer entering windo
  366.   6      Mouse button clic
  367.   7      User drag bo
  368.   8      Key presse
  369.   9      Menu selectio
  370.   10     Window scroll reques
  371.   11     Lose care
  372.   12     Gain care
  373.   13     Poll word non-zer
  374.   17     User messag
  375.   18     User message recorde
  376.   19     User message acknowledg
  377.  
  378. Don't worry if you don't understand what some of these mean, they will be explained as we progress. The main thing is that you can see that Wimp_Poll will return things like mouse click and keypresses and in so doing tell us which window and icon these happen in. We can check if these are 'owned' by our program and if so take the appropriate action.
  379. Practicalities
  380. You might think that this will make a wimp program very different from the non multi­tasking ones we have looked at so far. In fact, it's not so very different. The general system is similar. You may remember from our early sessions we defined a simple system to describe what a program does.
  381.  Get dat
  382.  Process dat
  383.  Output result
  384.  Go back to 1
  385.  
  386. When we translate this into a working program we normally have to add another step before 1, so what we get is this.
  387.  Set up progra
  388.  Get dat
  389.  Process dat
  390.  Output result
  391.  Go back to 
  392.  
  393. A Wimp program has to follow the same pattern. The main difference is that item 2 will be based around Wimp_Poll, and will in fact be itself a closed loop branching off to various processing routines and other routines to display results, probably in windows. So a sort of skeleton structure of a Wimp program would normally look something like this.
  394. PROCsetu
  395. REPEA
  396.  SYS "Wimp_Poll".... TO even
  397.  CASE event O
  398.   WHEN 2: (open window request
  399.   WHEN 3: (close window request
  400.   WHEN 6: PROCmouse_clic
  401.   WHEN 8: PROCkey_presse
  402.   WHEN 9: PROCmenu_selectio
  403.   When 17,18: PROCmessag
  404.  ENDCAS
  405. UNTIL FALS
  406. DEFPROCsetu
  407.   Define all the main system variables
  408.   DIM all the arrays require
  409.   Define windows and menu
  410.   Anything else required to get the program ready to ru
  411. ENDPRO
  412. DEFPROCmouse_clic
  413.   Check if the click occurred in one of our program'
  414.   windows or icons and if so deal with i
  415. ENDPRO
  416. DEFPROCmenu_clic
  417.   Find out which menu and item the mouse click occurre
  418.   on and take appropriate action
  419. ENDPRO
  420.  
  421. To explain how this would work in slightly more detail let's return to our old VAT calculator program and see how it might look. We could implement it with a single window, something like this:
  422. The VAT Calculator
  423. To use this you would enter the amount in the top writable icon, click on either the Add or Subtract button and the amount would be calculated and displayed in the lower icon.
  424. Applying this to the skeleton program, text entry in the top icon is actually handled by the Wimp, so we don't have to do anything. As soon as the user clicks on one of the buttons Wimp_Poll will tell us that this has happened and which button has been clicked. It does this by returning the window handle and the icon number within that window. The window handle is allocated by the Wimp when the window is created and registered with the Wimp  (which would be done in PROCsetup) and we will have to record this. The icon numbers are set when the window is created and begin at zero. Whatever method is used to design the window we will know and record the numbers of the icons.
  425. So, the CASE statement will pass the mouse click on to PROCmouse_click, which will first check that it's our window that's been clicked in, then work out whether it's the Add or Subtract button that's been clicked and pass control to procedures to do the actual work.
  426. Their job is going to be to read the text from the top icon, calculate the answer and then display it in the bottom icon. We are therefore going to need two more routines to deal with reading and writing text to and from icons.
  427. DEFFNread_icon_text (window%,icon%
  428.   Read text from designated window and ico
  429. = text
  430. DEFPROCwrite_icon_text (window%,icon%,text$
  431.   Display 'text$' in designated window and ico
  432. ENDPRO
  433.  
  434. To make these general purpose routines the information they require, the window handle, icon number and, when writing text, the text itself, is passed as parameters.
  435. So, we have the skeleton of a Wimp program. In the next session we will flesh out these rather bare bones and turn it into a fully working Wimp application.
  436. David Holden
  437.  
  438.  
  439. ÿÿÿÿVOLUME1/ISSUE7/BRANDY/INDEX.HTM Volume 1, Issue 7, Brandy Basic
  440.  
  441.  
  442.  
  443.  
  444. Brandy Basic
  445. Dave Daniels introduces Brandy Basic
  446. Brandy is a portable interpreter for BBC Basic, that is to say, it allows programs written in BBC Basic to be developed and run on computers other than ones running RISC OS. Naturally, though, Brandy runs best under RISC OS. My main goals when writing the program were to make it as compatible as possible with the Acorn interpreter and to allow programs that run on the RISC OS version of the program to run unchanged on other platforms. The program emulates features of RISC OS where it is necessary to do this. The plan was not to write an extended version of BBC Basic although additions have been made to the language, nor was it my intention to give people another reason to move away from RISC OS. I think that BBC Basic is still an excellent programming tool for many tasks and an interpreter such as Brandy would be useful to many people.
  447. It has been said that Basic is a poor language and that nobody seriously uses it. In my opinion BBC Basic has always been an excellent version of it and worth looking at. It has its faults and lacks any support for current practices such as object oriented programming. On the other hand the language is simple and easy to use. Substantial programs can be written using it with a little care. It is good for small, one-off programs or for experiments, which is perhaps its greatest strength. It can also make programming enjoyable again.
  448. September 1998 and 'Black Thursday', the day when Acorn shut down the workstation division and cancelled Phoebe, gave me the motivation to write the program. At that time I did not think that RISC OS computers would survive for very long, and if I was forced to move to a different machine then at least I would have a BBC Basic interpreter to play with. I started on the program in September 1998 and have continued to work on it ever since. I wrote most of it under RISC OS but development was really carried out in parallel under RISC OS, NetBSD and DOS. I learnt a lot about writing platform-independent code, but experience showed that it was platform-independent as long as the computer had an ARM or X86 processor in it. Oh well... The interpreter handles probably 99% of BBC Basic features, although exactly what is supported depends on the version being used. The RISC OS one is the most complete followed by the DOS one. The NetBSD/Linux version comes bottom of the list, but that just means that it lacks graphics support as well as sound.
  449. The origins of the program go back a long way. I have wanted to write my own Basic interpreter or a compiler for many years (since I started playing with computers at school in the 1970s, in fact). I began to develop my own Basic interpreter in the early 1990s but never finished it. It could run simple programs but that was all. On the other hand, the experienced gained was most useful when I sat down to think about Brandy.
  450. As I have just said, my interest in interpreters (and compilers) goes back a long way and I have always found the subject fascinating. Whilst some people write their own compilers, I think that interpreters are well worth looking at as well. Compiler and interpreters work in entirely different ways to achieve the same end, that is, to run programs. Compilers take the original program, the source code, and convert it into a form that can be more readily run on the computer. Interpreters take the source code and carry out the actions of the program directly from it. They work with the original program. Compilers blindly convert the program to its new form; interpreters are entirely driven by what they encounter as they wind they way through the program. Interpreters have a greater freedom than compilers, and to my mind this is what makes them interesting. On the down side, they are slower than compilers, and an interpreted program will typically run ten times slower than its compiled equivalent. The reason for this is because the interpreter works with the program in essentially the same form as the programmer and as a consequence there is a lot of overhead involved, for example, it has to locate variables every time they are referenced and check that each line of the program is syntactically correct. Minimizing this overhead is one of the challenges of writing an interpreter. Another great advantage of interpreters is that programs can be written more quickly and debugged more easily. One-off programs can be thrown together and made to work in a short space of time. Interpreters are also easier to write than compilers!
  451. During the 1980s I had a Grundy Newbrain and an Amstrad CPC. (Some people might remember that the Newbrain was also being considered by the BBC to be used as the BBC Micro.) Being interested by what goes on inside the machine, I investigated the Basic interpreters on both computers. The one on the Newbrain was interesting in that it was compiled as each statement was seen for the first time. Locomotive Basic on the Amstrad was interesting for other reasons, and tricks I learnt from that interpreter were important in the design of Brandy.
  452. The program turned out to be more complex than I thought it would be. One of the design goals was to make it as compatible as possible with the Acorn interpreter but this was complicated by the need to discover BBC Basic's undocumented features: what the manual says is not always what the Acorn interpreter accepts.
  453. One of the big problems was the program's performance. Acorn's BBC Basic interpreters have always had a reputation for speed and so making Brandy as fast as possible was another objective. The RISC OS version runs at somewhere between half and a fifth of the speed of the Acorn interpreter but I am happy with this: I do not think that there is much scope for improvement with the current program. Of course, running the interpreter on a faster processor always helps, and the program absolutely flies on a machine with a 700Mhz Pentium in it! It has been a struggle to make the program run as fast as it does on machines such as the RiscPC. My main target has been trying to reduce the overhead of interpreting the program. This has already been mentioned briefly, To expand on it, there are four sources of overhead:
  454. The syntax of each statement has to be checked and its contents determined
  455. The interpreter has to search for variables and arrays in the symbol table on every reference
  456. Expressions have to be type checked each time they are evaluated
  457. The program has to be searched to find the next statement to be executed when a branch occurs, for example, when looking for the 'ELSE' part of an 'IF' statement
  458.  
  459. To make it worse, this overhead is incurred every time a line is executed. The approach I took to reduce it was to embed pointers in the Basic program wherever possible, so that, for example, the interpreter would not have to search the symbol table for variables except the first time a statement is seen. After this it uses the pointer to reference the variable's value immediately. The same trick is used to speed up branches in the program, for example, in an 'IF' statement there is a pointer to the 'ELSE' part of the statement to avoid the overhead of finding it. This takes cares of points 2) and 4) and speeds up program execution greatly. It is the approach used by Locomotive Basic. On the other hand, points 1) and 3) cannot easily be avoided. The effects of point 1) can be reduced but you would really have to turn the interpreter into a compiler to eliminate them. I think that turning the interpreter in a semi-compiler would be an interesting step.
  460. The program is intended to be platform-independent and to run on other types of computer with no or little change. It can be thought of as comprising of two layers, an upper layer that deals with the Basic program and a lower layer that carries out all the operating system-specific tasks such as reading a character from the keyboard or finding out the size of a file on disk. The lower layer has to accept data or present it as RISC OS would. This means that the emulation layer is trivial for RISC OS but is quite complicated in the case of, for example, DOS. Here it was necessary to write an emulation of the RISC OS VDU drivers to handle output to the screen. At times it seemed like I was trying to reimplement RISC OS! If a feature is not supported by a particular version of the program then it is up to the emulation layer to flag an error. On the other hand missing features can be implemented relatively easily and at least two people have extended the program by adding support for a number of RISC OS SWIs.
  461. At the beginning I said that it was not my intention to write an extended version of BBC Basic. However there are two major changes. Firstly, strings can be up to 65536 characters long and, secondly, libraries can have their own private variables. There are a number of other additions, such as an extended form of the OSCLI statement (OSCLI ... TO) that allows the output from commands to be returned to the Basic program, and the FILEPATH$ pseudo-variable that supplies a list of directories to be searched when looking for libraries.. I felt that these were useful additions. There are other minor enhancements: the interpreter provides better error messages where it lists not only the number of the line in which the error occurred but also the procedure and library. plus a traceback showing the procedures and functions called at the point of the error. The TRACE options have also been modified, for example, TRACE PROC shows not only when a function or procedure is called but when it returns as well. I do not propose to add any other major extensions, although I have been considering whether labels would be worthwhile. This would allow you to write code such as:
  462.      GOSUB doi
  463.      .doit PRINT"Hello
  464.  
  465.  
  466.      o
  467.  
  468.  
  469.      RESTORE star
  470.      .start DATA 1,2,
  471.  
  472. The point of this would be to remove the need for line numbers
  473. Of course, to make the language more fashionable, I should really be adding extensions for object-oriented programming.
  474. As the interpreter is portable some features of BBC Basic have been left out. The main one is the built-in assembler. It is not possible to call machine code routines either. Again, this is for portability reasons but also because it is messy to do from a high level language. There are also major features that are present in only some versions, or, to be precise, graphics and sound. Support for these was a major problem and only the RISC OS version fully supports them. The DOS version has graphics support but this has a number of limitations. It has no sound support. The NetBSD/Linux version lacks both. The reason for this is that there is no easy way to how to implement them. Consider graphics: under NetBSD and Linux the program could use svgalib, but there appear to be major reasons for not doing this. Alternatively the interpreter could be rewritten as an X application, but this would tie the program to X windows. On the other hand, Brandy is supplied in source form precisely so that people can add this kind of feature.
  475. I have been working on Brandy for over two years and consider it to be largely complete. There is a list of features still to be added but none of these are major. No doubt there are still plenty of bugs to be found and fixed. It has taken a lot of effort to make it compatible with Acorn's interpreter and to run fast. I just hope you lot appreciate it!
  476. Dave Daniels
  477.  
  478.  
  479. ÿÿÿÿVOLUME1/ISSUE7/BUBIMP/INDEX.HTM Volume 1, Issue 7, Bubble Impact
  480.  
  481.  
  482.  
  483.  
  484. Bubble Impact
  485. David Bradforth reviews a game that may appear familiar to Playstation owners
  486. They say that imitation is the greatest form of flattery, so it’s good to see a version of Bust a Move - although obviously not identical to Bust a Move - on the Risc PC. Bubble Impact is, in fact, shareware which now has a UK distributor for the full registered version and as such I feel that a budget review is justified. (To be quite honest, since I first wrote this review I have bought Bust-A-Move 4 for the PC, and it's utterly dire. Bubble Impact is considerably better - in every way!)
  487. Before the mayhem begins ...
  488. For those unaware, Bubble Impact is - essentially - a variant on Tetris turned upside down. The difference between Bubble Impact and Tetris being that you have to get four bubbles together which are the same colour, instead of having to fill a line across the screen. In Bubble Impact, there are also special bubbles - such as the bomb which, when launched/hit, destroys a selection of bubbles from around it, making entry a lot easier to certain coloured bubbles.
  489. If you hit a row of coloured bubbles, they are all destroyed and anything depending upon them is also destroyed. For example, one level contains a blackcurrant - but if you hit the green stem with a green bubble all of the purple bubbles fall to the ground and the level’s over!
  490. Whilst Bubble Impact isn’t the most technically impressive game coded for the Risc PC, it is VERY addictive. In the process of writing reviews, we normally have very tight deadlines and hence have very little time to play games to destruction in. Bubble Impact is actually the cause of this review arriving to Dafyd (McFlanders - games editor of Archimedes World) late - I must have spent about ten hours playing it so far, and have the intention of playing it for many more.
  491. Yes, I really did make it to level 25 - without cheating!
  492. I suspect that this is mainly due to the adrenalin rush you can get by completing a level. If you wait a few seconds before launching a bubble, you are told to ‘Hurry Up’ and then, without expectation, the bubble is automatically launched - perhaps into a good place, perhaps into the one place you didnt want it!
  493. Needless to say, I think that Bubble Impact is an essential purchase. The gameplay will keep you engrossed for hour after hour - so if you have got an assignment due, don’t start playing until the work is done! As it’s shareware, get the cut down version (from the Acorn Arcade web site - www.acornarcade.com or this months RISC World CD) and then register to receive the full 100 levels. It’ll be the best fiver you’ve ever spent on a game!
  494. Product details
  495. Product:
  496. Bubble Impac
  497. Supplier:
  498. OwlArt Unlimite
  499. E-mail:
  500. owlart@argonet.co.u
  501.  
  502. David Bradforth
  503.  
  504.  
  505. ÿÿÿÿVOLUME1/ISSUE7/CITRIX/INDEX.HTM Volume 1, Issue 7, Evolving Acorn Hardware to Citrix ICA and Windows
  506.  
  507.  
  508.  
  509.  
  510. Evolving Acorn Hardware to Citrix ICA and Windows
  511. Andrew Harmsworth won't get rid of his Acorn machines....
  512. Few things in life are as reliable as an Acorn.  Ask any school IT technician who has worked with them for the last 10 years or so.  They will tell you how easy their job was until some curious devices, called PCs, marched onto the educational scene.
  513. PCs are here to stay in schools.  The momentum that began with the launch of Windows 95 has grown stronger ever since.  Anything that stands in the way of the dominant Microsoft machine is in for a pounding.
  514. Part of the great strength of the Windows environment is its internet software, most specifically the two major web browsers, Internet Explorer (IE) and Netscape.  Like it or not, without these and their innumerable plug-ins, enjoying the full experience of the web is an unachievable aim.  For whatever reason of economics, these feature-rich, stable and useful programs are also free.  Castle have done well with the release of Oregano, but it just isn't enough - and it costs about the same as a new PC for the site licence.
  515. In schools, the growth of the web as an educational medium - for research, for teaching, for learning - has been astounding.  In the past 12 months, for example, I have seen hits on my Solar System website blossom to an estimated 300,000 impressions for the year ahead.  The majority of these will be school kids.  Sadly even a small piece of javascript code that powers banner advertising for my site crashes Fresco on my RiscPC every now and then.  It has never ever done this on IE.  Pupils and teachers should not have to put up with software reporting "type=5" errors when browsing.
  516. Another PC strength is the size of the installed base: Windows is everywhere, and so too is the Office software.  The kids have it at home; their parents use it at work.  We would be crazy to provide them with anything else without a very good, educationally valid, reason. These reasons do exist, but they are a feature of my next article.
  517. There are partial solutions to the incompatibility problem.  For starters, Icon Technology's excellent EasiWriter could be run to allow the loading, saving and manipulation of Microsoft Word documents.  This has also proven a popular way of eliminating the possibility of infection of a school network from viruses distributed as Macro viruses, and also on PC-format floppies.
  518. Spreadsheet compatibility has always been a problem.  Longman Logotron's Eureka was an excellent solution, but it never handled Excel workbooks. This literally meant that if someone gave you an Excel file with two documents built in, Eureka could not cope.  That it is no longer being developed means that forking out for it is not a sensible investment. Softease's relatively new Textease Spreadsheet will shortly cope with Excel files, but it is a little late in the day for most schools now.
  519. I could list many more major program genres that offer curious compatibility issues to a school running Acorns.  The bottom line is that even if you can load the document, the program that you load it in is not the same as the one it was written on - so you need to know how to use two programs to do similar things.  Frequently, of course, the RISC OS program won't operate in the same way as the PC counterpart, or will lack features.  The result is frustration of pupils and teachers alike.
  520. When faced with the 'problem' of a lab of RiscPC 600s, running the out-of-date, incompatible Impression Publisher; the low-feature and stability-impaired Fresco; the dire Marcel; the dated, incompatible Resultz; and so on... what does one do?  The kit is sound: the RiscPCs have run for years with problems few and far between.  It would be a shame to move them into a cupboard or (as does happen) into a skip, and replace them with shiny new PCs.
  521. In steps Microlynx with their TopCat solution.  This allows you to do something very clever indeed.  As long as you have a network, you can attach a powerful PC server onto it running Windows and some software from Citrix, called Metaframe.  The TopCat software allows you to turn your Acorn machine into a network computer; essentially a terminal of the PC.  So, overnight you can run Office, Internet Explorer, Eudora, and so on.
  522. The cleverest part of TopCat is that it still allows you to run RISC OS programs locally on the Acorn machine.  When the RiscPC was introduced, one of its major selling features was the secondary processor - the PC card.  This promised to allow the running of Windows applications on a RISC OS machine.  It worked, but was never a truly satisfactory solution.
  523. Network Computing works.
  524. It is true that advocating the use of Windows and its applications in this way is in direct conflict with the idea of "supporting" the RISC OS scene.  The difficulty is that standard RISC OS machines do not offer compatibility with the machines staff and pupils have at home (in most cases).  It is also true that desktop publishing can adequately be taught using Impression, that spreadsheet work can be learned through Resultz, and that database manipulation is possible using Pinpoint.  However, with more and more homes acquiring a PC, it is not a sound argument to justify remaining with your old Acorns through "generic application teaching".  This was valid in the mid-1990s.  It remains partially true, but in itself is not enough.
  525. By converting your current Acorn computers to run as ICA (Independent Computing Architecture) clients, you are in one stroke enabling the retention of this kit, and your favourite software.  Furthermore, you allow the rapid growth of your network through the purchase of low-price NCs (Network Computers).
  526. RISC OS NCs are available from two sources: Cumana and Surftec.  They are considerably cheaper than a PC, and take up much less space.  They can be turned off and on, without the worry that the machine will stop working.  They allow you to load RISC OS software onto them over the network.  They run Windows as an ICA client, with full functionality.
  527. What's the catch?
  528. Well, running multimedia over a network has never been easy, and via Metaframe is still problematic.  This also means that streaming video over the internet is not possible.  Whilst annoying, both are hard enough on a network anyway, and the provision of "standard" applications far outweighs the desire for their provision.
  529. You also have to pay a licence fee for Windows, per machine that it is to be served to.  The same is also true for Metaframe, and TopCat. Nevertheless, it remains a competitive solution, and has the major bonus of allowing RISC OS software to be run as well.
  530. Since converting first generation RiscPC 600s to ICA clients over the summer of 2000, the school in which I work has been transformed.  For me personally, web access (via our ADSL connection) has enabled me to produce new teaching materials at a far faster rate.  I have also been able to teach the correct use of Excel in scientific analysis and graphing, which has reduced the occurrence of poor quality work produced on their own PCs.
  531. For the pupils, they are now able to bring work in from home, and get on with it in the school.  Similarly, they are able to take files home, safe in the knowledge that they will load immediately.  The same applies to staff, who are now happy with the system.
  532. Summary
  533. Aged Acorns are useful machines, but are frustrating in too many ways now, compared to home PCs.  The upgrade to RISC OS 4 and StrongARM processor may bring them into line, usability wise, with a home PC, but faster operation does not solve the software crisis.  Nor does the dual-upgrade come cheap: it's the price of a brand new PC system!  Last year I suggested to Castle and RISCOS Ltd that if they really wanted to stem the desertion of Education away from RISC OS, they should consider offering the StrongARM/OS 4 upgrade at cost price to schools.  Alas, in a market this small, it would have been a bold move with no immediate benefit to the two companies involved, and did not happen.
  534. Rather than migrating away from the platform, schools should consider evolving to the ICA client set-up.  It meets the needs and desires of staff, pupils and parents alike, whilst keeping the RISC OS machinery we all know and love in place.  This allows you to continue to use the investment you have made in RISC OS software, and even allows you to buy newer titles, assuming they are released.
  535. At the BETT show, Castle's Jack Lillingston told me that they were working on an educational solution that would take the entire market by storm.  Assuming this arrives sooner rather than later, retaining old Acorn kit could be the best move a school has made in the ICT field for years.
  536. Useful links
  537.  
  538. Opinions in this article are my own, and not necessarily those of my employer.
  539. Andrew Harmsworth
  540.  
  541.  
  542. ÿÿÿÿVOLUME1/ISSUE7/DEVELOP/INDEX.HTM Volume 1, Issue 7, Current Developments
  543.  
  544.  
  545.  
  546.  
  547. Current Developments
  548. "Insider" on current developments
  549. Some odd things have been going on at PACE and RISC OS Ltd recently and I have been asked by our Editor to try and find out exactly what. As you may know, PACE are a little tight lipped when it comes to revealing exactly what they are doing. However with a bit of research and filling in a few blanks you can get a very good idea. Of course PACE are a separate company with no real links to the RISC OS market, except one, they own RISC OS. So the actions they take could have a very direct impact on desktop users of RISC OS. Other big things are also happening with the manufacturers of desktop machines. So by asking the right questions of the right people I hope to be able to fill in the blanks.
  550. 32bit code
  551. As an example of what PACE have been doing consider the new 32 bit C libraries released by 
  552. PACE have also approached a number of well known RISC OS developers to produce 32 bit versions of their current applications. So a future PACE set top box will be able to run 32 bit versions of a popular wordprocessor and many other applications and utilities. However I am not allowed to tell you which ones.
  553. Castle Technology and Millipede
  554. Suggestions are popping up from all over the place that the next 
  555. The prototype Imago motherboard
  556. It as also been suggested that Castle will be showing a prototype machine running at the Wakefield show. This seems very likely as Paul Middleton of RISCOS Ltd has already hinted about the release of RISC OS 4.5. Indeed rumours suggest that the motivation for RISC OS Ltd taking on a programmer working inside the Cambridge offices of PACE was to get RISC OS running on the Imago (or a similar -ED) motherboard.
  557. The XScale
  558. As many readers will know the XScale is the name for the new generation of high performance StrongARM processors that will be manufactured by 
  559. The Intel 80200, the first XScale based processor
  560. Just In Time
  561. So accepting that in order to make future machines we need 32 bit applications and an operating system, what can be done about current applications, such as ArtWorks, that are 26 bit only. Well the rumour mill suggests that both PACE and RISC OS Ltd are working on a Just In Time (JIT) application that will convert old 26 bit code to the new 32 bit version just before the code is required by the processor. RISC OS programmers may well end up working on this problem almost full time. Just In Time may not be of great use to PACE in the long term, however it would be of a great deal of use to makers of desktop computers such as Castle Technology and Millipede. (Strangely enough Cerilica were talking about a JIT application at RISC OS Southwest - ED)
  562. RISC OS Ltd
  563. While it seems that RISC OS Ltd have been working with Castle and Microdigital on getting RISC OS running on a new motherboard other strange things have happened. The new version of !Printers has been removed from the RISC OS Ltd website, though you can still obtain it from Icon Technology! Also the proposed Disk Fixer has vanished, presumably so that it does not conflict with the Arm Clubs release of DiskKnight. However Paul Middleton of RISCOS Ltd was confident about the release of RISC OS 4.5, and at a later date the full 32 bit RISC OS 5. We will have to see. However I would not be surprised to see the new Castle computer running RISC OS 4.5, while other manufacturers are stuck using RISC OS 4.
  564. No XScale? No problem!
  565. While the Xscale isn't currently available another high powered RISC based processor is, and has been developed over a number of years. The manufacturer is Hitachi. The 128 bit Hitachi processor seems to have a similar instruction set to the ARM designs. The Hitachi also has full floating point capabilities. The processor can also be linked to a Power VR graphics set with great ease. Although this may not mean much to many it is very important. PACE has just signed a deal with SEGA to licence the DreamCast chip set (Hitachi processor and Power VR graphics). One developer in the RISC OS community has been approached with regard to porting their product to "an un-named" processor, I wonder which one?
  566. PACE have have spent a great deal of time and money writing compilers and other tools to help with RISC OS development, could they have written a cross compiler for another "foreign" processor?
  567. I will leave you with one important thought. The RISC OS we know and love is not same as the RISC OS that PACE are using. PACE will develop their own flavour of RISC OS for their own purposes. One only has to hack about a Bush STB to see what is missing from a normal desktop version of RISC OS. RISC OS Ltd, computer manufacturers and users can benefit greatly from the work PACE is doing. However all ways remember when PACE say RISC OS, they mean their own version, which could end up being quite removed from the operating system on our desktop machines.
  568. News Flash
  569. PACE have just demonstrated their new set top box design to selected parties, I hope to have more details soon. (Don't worry I have them check out the 
  570. "Insider"
  571.  
  572.  
  573. ÿÿÿÿVOLUME1/ISSUE7/DISC/INDEX.HTM Volume 1, Issue 7, Disc World
  574.  
  575.  
  576.  
  577.  
  578. Disc World
  579. David Bradforth and Aaron Timbrell on this months DISCWorld
  580. This months DISCWorld roundup
  581. RISC World is twelve months old. Let's celebrate with one of the biggest games ever to be included on an Acorn cover disc. David Bradforth explains, and introduces the other items featured.
  582. If, unlike me, you can remember back to issue four of RISC World it had a number of defining characteristics. Of course, the new editor/new design thing was quite clear, but the programs section of the disc included commercial software for the first time. Being quite keen on this idea, David, Aaron and myself sought out a number of commercial items for issues five and six and indeed we have made the guarantee that a commercial program will be on every disc.
  583. With issue seven - the special edition - this is now starting to pay off. We have on offer this month perhaps the most graphically impressive game ever released for RISC OS. Wizard Apprentice, previously priced at £35, is complete and free to all RISC World subscribers - as well as a number of smaller, actually new, commercial offerings.
  584. I'm actually taking a slightly different approach to the Wizard Apprentice feature - we've linked a number of items in, as they all relate directly to the material on the disc. It may make sense to print each of them out before you install the game, and from that point in play like mad!
  585. Hope to see you in the new volume, where we hope to offer (for Volume 2 Issue 1) a number of superb ArtWorks modules, a complete commercial game and a complete commercial spreadsheet.
  586. David Bradforth
  587. Wizard Apprentice from APDL
  588. Complete game - original rrp £35.
  589. Wizard Apprentice, originally released in the late part of 1997 by The Datafile, was considered by some to be somewhat over priced at its time of release. For a high quality game, the average at the time was perhaps £25 - Wizard Apprentice weighed in at £35. After a few months, the price came down to allow a much wider circulation to occur.
  590. When APDL bought The Datafile, they took on Wizard Apprentice and at the first opportunity brought the price down to £7.90. Now, for the pleasure of those who have yet to experience it, we present the complete game - free, with no limitations whatsoever. The only thing we have had to do is remove the Introducion sequence and a few other non essentials to get it to fit on the CD. If you wish to acquire an original Wizard Apprentice CD-ROM, send £2 (coins or stamps only, please) to the APDL address, providing your name and address (as known on the RISC World database).
  591. RiscAction 1 cover disc
  592. Complete disc archive - contains software worth £70
  593. RiscAction (latterly Smash) got off on a good start with it's cover discs. Contained within this archive, you'll find the first issue's disc - the second issue featured the Professional Typography CD-ROM which isn't particularly practical for fitting onto a RISC World disc.
  594. Some of the goodies you'll find here include...
  595. Master Brea
  596. DrawWorks SE
  597. All of the items are still copyright material, and should not be treated as anything but.
  598. Impression Junior from Computer Concepts
  599. Complete desktop publishing program - originally £120
  600. I had hoped we'd fit this in last time, alongside reviews of Ovation Pro and Sleuth 3 - still I know it's a good program, and that's all that matters! Okay, enough of the cheek: Impression Junior was released around the same time as CC announced Impression 2. It very quickly became a highly used word processor and desktop publishing package within a number of schools.
  601. Indeed, the person writing this article got his first ever taste of Acorn journalism while writing using Impression Junior. That, and having been forced to design the school newspaper (which made for an interesting experience, at the best of times).
  602. These days, Impression Junior can seem to be a little old: and it is, but it's still a very capable program of which you can gain many hours usage. To use it fully on a Risc PC (or RISC OS 4 machine), you should first ensure that you're in a numbered mode (e.g. 28) otherwise the program may seem to act quite oddly.
  603. For those who don't yet have it, Impression Style is available as an upgrade to owners of the RISC World edition of Junior. To order, at just £49 + VAT, call Computer Concepts on 01442 351000 or email kate@xara.com for details of other ordering methods. You may even receive a larger discount than you originally expect!
  604. HTML Search
  605. A complete index to the entire first volume of RISC World can be found on the root of this CD. Type in a key world and HTML Search will search every article from every issue. Once completed a save dialogue box will open and you can drag out an HTMl file containing links to all the articles that feature your keyword. Now finding information in RISC World is even easier and much quicker.
  606. The Complete DiscWorld list
  607. So in alphabetical order this months DiscWorld contains:
  608. ARCHIE - Run RISC OS on a PC
  609. ARMCODE - Files supporting the ARM Code articles by Brian Pickard
  610. BEGINPRG - The examples from the BASIC programming series
  611. BRANDY - BBC BASIC interpreter for Windows and Linu
  612. BUBIMPACT - Demo version of Bubble Impact
  613. DWSE - DrawWorks S
  614. JUNIOR - Complete version of Impression Junior from Computer Concepts
  615. MBREAK - Complete version of Master Break from Superior Software
  616. PERL - Example programs from Richard Goodwins article
  617. PERL2 - a copy of the PERL programming language
  618. PD - The latest PD software from our PD column
  619. WIZAPP - Wizard Apprentice - from APDL
  620.  
  621. Utilities
  622. This CD-ROM contains a number of utilities and pieces of software to accompany the articles in the magazine. The magazine now uses GIF and JPEG images rather than having two versions, one with Sprites and one with GIF. The magazine can be found in the HTML directory from the root of the CD.
  623. There are three utilities to help you read this disc (RISC OS users only). These can be found hidden inside the !RiscWorld application in the UTILITIES directory (The !RiscWorld application automatically uses these utilities if they are required):
  624.  A file-only copy of Fresco, to display the HTML. This will only run if you don't already have a copy of Fresco installed, so that it won't overwrite your cache
  625.  ArcFS, which can be used to read some of the archived software on the disc
  626.  SparkPlug, an alternative de-archiver which can also read Zip files
  627.  
  628. Usenet archive
  629. Also included on the disc is 
  630.  
  631.  
  632. ÿÿÿÿVOLUME1/ISSUE7/DWORKS/INDEX.HTM Volume 1, Issue 7, DrawWorks Tips
  633.  
  634.  
  635.  
  636.  
  637. DrawWorks Revealed
  638. Aaron Timbrell continues his series on DrawWorks New Millennium.
  639. Quick Effects
  640. One of the real strengths of DrawWorks is that complex and satisfying effects can be achieved quickly and simply using a only a few mouse clicks. After all this is why DrawWorks was written in the first place, so we could produce advertising material, box covers and other items as quickly as possible.
  641. The Map
  642. DrawWorks includes a simple map generating button, which can take a load of scribbled lines and circles and turn them into the basis of a map quickly.
  643. From this
  644. Into this
  645. The mapping tool is simplicity to use. Firstly draw the rough shape of the map with thin lines for roads and circle for roundabouts. Then click on the mapping tool button on the DrawWorks toolbar. Select the line thickness (that is the line thickness for the white center of the roads excluding the black edges), then choose the type of line style you want. Once you have made your choices click on the OK button and your original will be replaced by the new version.
  646. The mapping tool
  647. For a bit of fun you could try seeing what happens when you use the mapping tool on a line of text.
  648. Multi coloured text
  649. Another fun and quick effect is multi coloured text. Simply type a line of text and then convert it to path.
  650. The convert to path tool from the text toolbar
  651. Mow select this line of text and click on the DrawWorks Colouriser tool.
  652. The DrawWorks Colouriser
  653. Choose any of the four options from the top part of the menu, then click on the OK button and your text will be coloured.
  654. Coloured text
  655. Finding a colour
  656. Sometimes you use a colour in a piece if artwork and when you come back to it some time later you have no idea what colour it was. However there is a way round this problem. If you use the DrawWorks PureTint or Named colours you can always ask DrawWorks what colour it was. Simply select the object you want to know the colours of and click on the relevant colour query button. The PureTint query for PureTint colours, and the Named query for named colours.
  657. The PureTint query window
  658. EPS Preview
  659. This little tip is prompted by a problem a customer had the other day. Now I knew the answer to the problem but the customer didn't. They were exporting files in EPS format from DrawWorks, however when the files were opened on a PC some bits of text were filled in. The problem was that they were using the RISC OS font Homerton. This has non standard winding rules, which means that when it is rendered by a PC it comes out wrongly.
  660. There is a simple way to check that all will be well when you export an EPS file. Simply convert all the text to path and select it. Then click on the winding rule button on the DrawWorks style toolbar and choose Non Zero from the list. If the font you are using has a problem you will see it at once. I recommend using the fonts that are supplied with DrawWorks as they are drawn the "correct" way round and should not suffer from this problem.
  661.  
  662. The winding rule problem
  663. DrawWorks Special Offer!
  664. For those of you who still haven't upgraded to DrawWorks New Millennium we are running a special offer, you can get a copy of DrawWorks New Millennium on CD for only £21.50 inclusive while stocks last. For more details check out our advert on this copy of RISC World, quote code RW1 when ordering!
  665. That's it for this volume, see you next year!
  666. Aaron Timbrell
  667.  
  668.  
  669. ÿÿÿÿVOLUME1/ISSUE7/EDITOR/INDEX.HTM Volume 1, Issue 7, Editors Corner
  670.  
  671.  
  672.  
  673.  
  674. Editors Corner
  675. Aaron Timbrells own bit of the magazine.
  676. Well despite the best efforts of Hugh Jampton and others RISC World has reached the end of Volume number 1. Since I took over with issue number 4 our subscriptions have continued to climb and the feedback I have received so far has been very positive. Of course it's now crunch time. If you like RISC World and want to continue reading it then subscribe; if you don't like it then tell us so we can alter the magazine. Feedback from our readers is increasing all the time, just check out the letters page, but more is always welcome. We need to know when we have done things right, and when we have done things wrong.
  677. One of things I wanted to do when I took over was publish articles that the other magazines didn't. There is no point subscribing to three or four RISC OS magazine if they all feature the same things. This month we have an article on developments from the hardware manufacturers and an exclusive on the new PACE Set Top Box. I am pretty sure that other RISC OS magazines didn't get someone into the demonstration of the prototype!
  678. We also have a couple of articles on emulation. We want to show you how to run RISC OS software on a Windows PC and how how to run Windows on a RISC PC without a PC card.
  679. You may have noticed that StarPROG is missing from this issue. It's missing for one very simple reason, we only received one submission. I monitor all the series in RISC World, if one doesn't generate a response it gets pulled. After all, what do you think happened to the puzzle from Rex? If you would like StarPROG back then send in some programs!
  680. Remember, we only write RISC World, the readers are the people who matter. Already we have several new series planned for the next volume, including a new Digital Imaging column. This idea was suggested by a reader, and after a discussion he has also agree to write the new column, and of course like all our authors he will be paid. If you have an idea for a column or an article then send it to me and you never know, your name could be in lights, well HTML anyway.
  681. RISC World Issue 7
  682. As I am sure you will have noticed this issue is rather large. Not only is each issue getting gradually bigger but this one also includes the full contents of issues 1 to 6 as well. This means you can keep the whole first volume of RISC World on a single CD. As for the individual CDs that comprised each issue, well why not give them to a friend. And if your friend subscribes don't forget to tell them to use the "Friends" form on the root of the CD. If they do then you will get an extra issue of RISC World for yourself free!
  683. We have also included an HTML search engine on this CD. This can search the entire contents of Volume 1 and return HTML links based on any keyword you enter. Simply enter the keyword you are looking for, then click Begin. The status window will show you which issue is being searched. Once the search is over a save dialogue box will open, just drag this file to your browser and you will have a set of links you can follow for each article that contains your keyword.
  684. The HTML Search main window
  685. Editors Rant of the month
  686. I really don't have much of a rant this month, simply because I can't think of anything much that has gone wrong. We have had our usual small mix of Custards (50% Customer 50% Bastard) over the last few weeks but none of them have proved to be too difficult to help. However, I was most impressed with one customer who sent an e-mail registering a product purchase but hadn't included their address. Oh, or their real name. I have installed a few more RISC OS 4 upgrades over the last couple of weeks and all went smoothly. Work is continuing on a new version of DrawWorks scheduled for release at Wakefield.
  687. In fact the only thing that has driven me at all mad is the amount of mud in the back garden. This mud has an annoying habit of attaching itself to any Greyhounds that may be belting round the garden. The attached mud then ends up welded to carpets, walls, beds, sofas, me, etc as the Greyhound flies back into the house. I presume it is the speed that causes the mud to permanently weld itself to everything so efficiently. So since we can't remove the hound from the garden we are going to remove the mud and pave the effected sections to (hopefully) solve the problem. In the meant time if you want to re-create the Battle of the Somme indoors out of the rain just pop round.
  688. Printing RISC World
  689. The new look of RISC World means that when you want to print an article on your printer it will have the light yellow background. However most web browsers allow you to turn off the background images when printing. The example below shows the print dialogue box from Fresco.
  690.  
  691. As you can see the option "No Background" is ticked. If you want to print out any of the RISC World pages then make sure you have clicked a similar option in your browser.
  692. Aaron Timbrell
  693.  
  694.  
  695. ÿÿÿÿVOLUME1/ISSUE7/GAMES/INDEX.HTM Volume 1, Issue 7, Games World
  696.  
  697.  
  698.  
  699.  
  700. Games World
  701. David Bradforth explains about our exclusive, and winds up the volume with a roundup of the latest games news.
  702. As promised last time, this month's RISC World disc contains something of a gaming exclusive. Wizard Apprentice, originally priced at £34.95 is on our disc. This isn't a demo - it's a full version which includes all the levels with only a few non essentials removed to fit it on this (rather full) CD.
  703. You can get the original CD-ROM for a postage and handling charge; details of which are in our index. We recommend that you read through the reviews and manual, both of which are linked from the main index. Here you'll be able to find out what people though of it when they first looked at it, along with my updates to reflect inaccuracies.
  704. We hope you enjoy the game - if you want more of the same, please let me know at 
  705. More woes for Artex Software
  706. Artex Software don't seem to be having much luck with their publishing affairs. Back in 1998, they'd agreed that Acorn could publish the then imminent Tek 1608. This was shortly after followed by the departure of their main games contact. No problem - just change to somebody else. Then, of course, September 1998 occurred and Acorn itself pulled out of the desktop computer market; leaving Artex without a publisher for their stunning game.
  707. Much to their credit, they're still developing it. I don't wish to provide screenshots here, as I'm optimistic that the game will change further before it's finally released. Exact details of publisher, release date, and so on are yet to be confirmed.
  708. The future for Iron Dignity was looking somewhat more positive. The reception of the PC market to the trailers (one of which was recently included on the PC Gamer CD in the UK) had been immensely positive, and with development progressing rapidly its ultimate transition into a RISC OS version would not have taken long.
  709. Enter problem two: Topware Interactive, the German based publishers of the PC version, have requested an insolvency order. This essentially means they are unable to continue trading, leaving Artex yet again without a publisher. This time, however, the PC version of Iron Dignity is pretty close to completion. Artex have announced that the development is still continuing, and the game will be released on schedule.
  710. This will then allow for its transition into a RISC OS version to occur, and a lot of very happy Acorn games players to continue playing.
  711. We'll keep you informed on the latest developments, but for those on the internet do visit www.iron-dignity.de for the latest information on that game title. (Don't forget that R-Comp Interactive are the UK distributors for Ankh and Exodus - visit 
  712. Eat My Shorts... sorry... Dust
  713. Nathan of VOTI seems to be turning into something of a celebrity. Not content with having brought the Acorn market Chaos Engine, closely followed by an update to StarFighter 3000 his group is developing a new racing game, codenamed EMD. Specific details are changing rapidly, so I'll pass on comments - but the game looks set to take the throne of king RISC OS racer away from the likes of Drifter, Burn Out et al.
  714. Visit 
  715. A deeper descent
  716. Just before Phoebe was due to be released, R-Comp Interactive announced the release of Descent, a RISC OS conversion of the classic Interplay game. Set in space, your task is - basically - to survive. It's a compulsive sort of affair, even for those who may not play the game properly.
  717. Anyway, the RISC OS Descent packs include a Descent II CD-ROM, which shall shortly be usable under RISC OS. Yes - they're releasing a Descent II driver disc, allowing access to the full game; but probably not the cut scenes which appear every five levels or so.
  718. Acorn Arcade have a full preview available, but we'll be waiting for the final release until we cover the game in any detail.
  719. To view the Acorn Arcade preview, go to www.acornarcade.com. For further information on Descent II, call R-Comp Interactive on 01925 755043 or preferably email them as 
  720. And what of the rest?
  721. Since RISC World was launched, we've offered previews of a number of games yet to come to fruition. Of these, the one I've most been interested in is Skirmish, which two years ago looked like it was due for imminent release, with Tau Press named as prospective publishers. The latest reports are that the game will be finished, but as the authors are completing degrees it's taken a bit of a back burner.
  722. This time next year? Let's hope for a much increased RISC OS market, with the influx of the Omega allowing for games such as F16: Fighting Falcon and the 24 bit version of Repton to finally get released. Oh yes, and I'd like to win the lottery too! See you next time.
  723. David Bradforth
  724.  
  725.  
  726. ÿÿÿÿVOLUME1/ISSUE7/HTML/INDEX.HTM Volume 1, Issue 7, Programming in PERL
  727.  
  728.  
  729.  
  730.  
  731.  
  732. Programming in PERL
  733. Programing interactive sites #1 - a "crash" course in Perl programming
  734. By Richard Goodwin.
  735. These days simply creating a static web page no longer seems to be enough. Everyone wants information to be up to the minute, interactive and as detailed as possible.  So how do you go about creating such content without paying a fortune to a programmer?  Fortunately there are a number of solutions to web programming that are simple enough for most people to pick up without needing a degree in computer science.
  736. The main contenders are Perl, PHP and ASP (VBScript), which can be used in a variety of ways - for instance as stand-alone programs, embedded inside a HTML page, or a combination of the two (embedding the output of a program in the middle of a HTML page).  If you can edit HTML tags then you should have no problems writing useful web pages in these languages; if you can program simple programs in BASIC then you're more than qualified.  In many ways these languages are Web designer BASIC - in fact ASP files are usually written in Visual BASIC script (VBScript).  They're much easier to get into than, for instance, JavaScript, which is only a scripting language.  Here I'll be talking about PERL, with PHP and hopefully ASP to follow.
  737. Rest assured that I will not be attempting to turn you all into programmers - I'll provide useful snippets of code and example programs that you can use on your own sites with a minimum of modification.  If you're interested in dabbling in Perl - or already write your own code - then the code here might be of interest to add to your own library of code.  Perl can be used to do some very complex things, and is used by system administrators as well as professional web designers to run many aspects of the Internet, but it has the virtue of being very easy to get into.  As such I'll draw some comparisons with the usual beginner's language on RISC OS machines, BBC BASIC.  Perl also "borrows" from other languages such as C, but if you've taken the time to learn C I'll assume you don't need someone like me pointing out how to do the basics.
  738. If you want to test the following programs, you can download a copy of Perl for RISC OS from the following address
  739. http://www.perl.com/CPAN-local/ports/#acorn
  740. Although the RISC OS version of Perl does not have some of the more advanced extra features that a Unix implementation might have - for instance it doesn't appear to have the LWP module as standard (which allows you to fetch files over the Internet), which is pretty standard on Unix implementations - it's still a pretty fully-featured version of Perl and in general you should be able to test your programs on your desktop.  It will help if you have a RISC OS web server as well, such as Netplex or WebJames, which will allow you to see the result of your programs in a web browser without the expense of staying online while you're testing your program
  741. On your RISC OS machine, all you need to do is make sure that the file is settyped to &102 (Perl) and double-click on it like you would to run any other program - so long as the main Perl application has been found it'll run your program in the same way as a BASIC program, with any output appearing in a white box in the middle of the screen.  If you're using a Web server see the instructions that came with that program.  If you're uploading (or writing) on a Unix machine, such as your ISP or university's web server, then you need to make sure it's executable - that is, the server needs to know it's supposed to be run.  To do this enter the comman
  742. chmod 777 <filename>
  743. where <filename> is, obviously, the name you gave the program  when you saved it.  777 means that anyone can do anything to the file - read, write and run it - so you should probably use 755 on a public web server (everyone can read and run it, but only you can alter it).  FTPc can set permissions for you using the Site option
  744. The "Hello World" program
  745. #!/usr/bin/per
  746. print "Hello World!\n";
  747.  
  748. That's all there is to it
  749. The first line - #!/usr/bin/perl - tells the computer you're running the program on where to find a copy of Perl, and it's almost always /usr/bin/perl on Unix systems. On RISC OS of course this isn't needed at all - settyping a file allows the parent program, be it Impression or Perl, to react to someone double-clicking on a file - but you'll need it when you eventually move your code onto the ISP/university web server.  On PCs #!perl is usually used
  750. The second line - print "Hello World!\n"; - is, fairly obviously, a print statement that outputs Hello World!  However, there are a couple of items that are worth pointing out.  The \n part means that a linefeed is added to the end of the text.  This is handy if, for instance, you're outputting HTML and want to examine the source - it's better if it's not all in one lump - but vital for certain later operations.  The semi-colon on the very end of the line tells Perl that this is the end of the command.  You can split commands over multiple lines, or have more than one on a line, but if you forget to put that semi-colon at the end of each command then they'll run together and you'll get errors.  Note also that you need speech marks around text; if you want to have speech marks inside a piece of text you need to add a \ character in front, such a
  751. print "say \"hello\" folks!";
  752. If you want to get a little more fancy, here's a loop
  753. for ($loop=1;$loop<=10;$loop++) 
  754.   print "$loop. Hello World!\n"
  755. }
  756. this will print Hello World! ten times, with a number in front of it.  There are a few interesting things introduced here
  757. $loop is a variable - it holds a number, but could equally hold a piece of text.  In BASIC you'd expect to find loop$ being used to hold text, and loop% for numbers, but in Perl you just use $variable_name for any type of variable.  It can even convert between numbers and text automatically depending on what you try to do with it.  If you are a BASIC programmer you might be interested to note that in the print statement the variable is inside the speechmarks along with the plain text - that's fine, and more of that later
  758.  The for loop is almost exactly the same as a FOR...NEXT loop in BASIC; it's just that all the attributes are kept within brackets, and are separated by semi-colons.  This loop starts at one ($loop=1) and will continue while $loop is less than or equal to ten ($loop<=10).  It goes up in increments of one, which is the last command: $loop++.  If you wanted the loop to go backwards - for instance from ten down to one - you could use something like this
  759. for ($loop=10;$loop>=1;$loop--) {...}
  760. o
  761. for ($loop=10;$loop>0;$loop=$loop-1) {...}
  762.  
  763. $loop++ adds one to $loop, and $loop-- decreases it by one, but you could jump in bigger steps using $loop=$loop+2 or the like - this is a slightly different way of writing the STEP command in BASIC
  764. Notice how after the loop there's a curly bracket, the next line's indented and then on the final line there's a closing curly bracket?  These curly brackets are the standard way you write some form of condition in Perl - a loop, a condition (for example, if... elsif... else... endif), or a sub procedure.  You don't have to indent the lines inside the brackets, or put the brackets on the same line as the condition, but I write my code like that so it's easier to read.
  765. Web Pages - First Steps
  766. #!/usr/bin/per
  767. $date=`date`
  768. print "Content-type: text/html\n\n"
  769. print "The data is $date\n";
  770.  
  771. It might not look much like a web page (Oregano won't display it properly!), but this is the first step towards adding content to your site that isn't just static.  The $date=`date`; line is a bit of a cheat - the back-quotes (`) mean that Perl should run the program called date and return the results to the $date variable.  If that sounds complicated then forget it, we'll be looking at better ways of getting the date later.  It also probably won't work on your RISC OS desktop machine
  772. The important part is the line print "Content-type: text/html\n\n"; - this lets the world know that you're sending HTML content out.  If you're viewing the content with a web browser, or including this as part of an existing HTML page, the program that's handling it won't know what to do with this data unless you say what content you are sending.  Notice that there's a double linefeed (\n\n) at the end - this is used to say the details are ending, and the content will begin below.  You can have other commands - for instance, to set cookies - in these headers, but there must always be a double linefeed afterwards or you'll get an error from your web browser
  773. The output from this program will look something like this
  774. Fri Jan 12 15:21:52 GMT 2001
  775. I think that's a little long-winded, so we could just chop this down a bit
  776. #!/usr/bin/per
  777. $date=`date`
  778. $date=substr($date,0,19)
  779. print "Content-type: text/html\n\n"
  780. print "$date\n";
  781.  
  782. The substr($date,0,19) command takes $date, starts at the first character (0) and keeps a certain number of characters (19).  In BASIC this is the same as the MID$ command, except you start counting from zero not one.  So, you should just ge
  783. Fri Jan 12 15:21:52
  784. However, you're still getting the same lame layout, just without the timezone and year on the end.  Let's take control
  785.  
  786. #!/usr/bin/per
  787.   $hour=(localtime(time))[2]
  788. $minute=(localtime(time))[1]
  789. $second=(localtime(time))[0]
  790. print "Content-Type: text/html\n\n"
  791. print "$hour:$minute.$second\n";
  792.  
  793. This will print a 24 hour clock.  The Unix system has pretty good time facilities; but if you write a program to print time; you'll see that it usually returns a big number, not something human readable.  This number is the number of seconds since 1am on January 1st 1970 (which was a Thursday apparently!) - not very useful you might think, hence the localtime and gmtime commands to convert it to something more useful.  localtime takes into account the current timezone, including daylight savings time - useful for printing the current time if your target audience is a human, but if you want to use the current time and date as part of a unique ID - perhaps as a filename or serial number for a piece of data - then you want to use gmtime.  Why?  Think what might happen when the clocks go back..
  794. (As it stands the program above isn't quite right - it will miss off the leading zeroes in front of the numbers (for instance 12:00.00 with come out as 12:0.0).  To get the best out of this code, add some formatting commands:
  795.   $hour=sprintf ("%-.2d",((localtime(time))[2]))
  796. $minute=sprintf ("%-.2d",((localtime(time))[1]))
  797. $second=sprintf ("%-.2d",((localtime(time))[0]));
  798. ...for a version that forces two digit output
  799. localtime can return nine elements - 
  800. ($second, $minute, $hour, $monthdate, $month, $year, $weekday, $yearday, $is_daylightsavings) = localtime(time); - which is why you use $hour=(localtime(time))[2]; meaning give me option 2 from the result of localtime (again, start counting at 0).  However, as all results are numeric, and some of them start counting from zero, you probably won't want to print them straight out.  So, here's some code that sets up a human-readable date too
  801.  
  802. $monthdate=(qw(0 1st 2nd 3rd 4th 5th 6th 7th 8th 9th 10th 11th 12th 13th 14th 15th 16th 17th 18th 19th 20th 21st 22nd 23rd 24th 25th 26th 27th 28th 29th 30th 31st))[(localtime(time))[3]]
  803. $month=(qw(January February March April May June July August September October November December))[(localtime(time))[4]]
  804. $year=1900+(localtime(time))[5]
  805. $weekday=(qw(Sunday Monday Tuesday Wednesday Thursday Friday Saturday))[(localtime(time))[6]]
  806.     
  807. $date="$weekday, $monthdate $month $year"
  808.  
  809. \n"
  810. print "$hour:$minute.$second\n"
  811.  --
  812. As you can see, one of Perl's strengths - and some might say weaknesses - is that There's Always More Than One Way To Do It(tm)
  813. File Handling
  814. Being able to handle files is very important if you want to write simple Perl scripts - as a language it was designed to process textual documents, and part of that is being able to load and save that text.  Until you reach the dizzy heights of being able to build and maintain a database system (which generally isn't necessary for small amounts of data) then storing data in text files will allow you to get at information quickly and easily, be it a list of vistors' comments, a batch of news stories, or the data for a web counter
  815. Again there's several ways of dealing with files in Perl, but I'll stick to the tried and tested easy ways
  816. #!/usr/bin/per
  817. $text=""
  818. open FILEHANDLE, "<datafile.txt
  819.      or die("Unable to open the file for reading")
  820. while ($line=) 
  821.   $text.=$line
  822.  
  823. close FILEHANDLE
  824. print $text
  825. File reading in Perl
  826.   $text.=$line
  827.  
  828. close FILEHANDLE
  829. print "Content-Type: text/html\n\n"
  830. print $text
  831.  --
  832. First of all we start off by setting up $text to be blank (="") just so that, later on, we're not operating on a variable Perl's not seen before - it can still cope with this, but it's bad programming practice (and if we were using stricter error reporting it'd generate a warning).  Next we open a file for reading - the open command, not surprisingly.  This takes two parameters, a file handle and the name of the file.  The file handle can be any bit of text, but it's usually written in CAPITALS just so you can tell it from a command when you're looking through your code.  The file name has a < sign on the front of it to tell Perl that you want to open the file for reading; a > sign is to open a file for writing, and a double - >> - would mean you're appending to the end of a file (if the file doesn't exist it'll just create it without giving an error).  You can see another command tacked on to the end - the die statement means that if the file can't be opened for whatever reason the program will report an error and then stop
  833. The next couple of lines will load the entire file in and store it in $text.  The while ($line=) basically means that while anything can be read from the file attached to FILEHANDLE, it will be read into $line.  I've used $line as the variable name as this method loads the file in a line at a time, with the happy side effect that it doesn't matter if the file was created with PC-style line endings, by the time you get to use it it'll have been altered so that only Unix (and RISC OS) type line endings are present.  The $text.=$line; part means that $line is added to the end of $text; the dot in this context always means "add to this variable", in the same way that in BASIC you can have number%+=4 instead of number%=number%+4 (equally in Perl you could write $text=$text.$line for this textual addition).  By the time that this program is finished, the entire contents of the file will be contained in $text
  834. Finally we close the file - not strictly necessary as Perl will do this when it finishes running the program, but you should get in the habit in case you want to access the same file more than once in the same program.
  835. To compare and contrast, if you were writing the same code in BASIC you'd use something like the following
  836. text$="
  837. filehandle%=OPENIN "ADFS::4.$.file
  838. IF filehandle%
  839. The same file reading code in BASIC
  840. Of course this code is not very useful in BASIC as you only have 255 characters to play with - if the text file is a long one you'll get an error, and if you got around that (by printing the line immediately rather than adding it to another variable) you'd get linefeeds in the middle of long paragraphs as BASIC chops your paragraphs into 255 character chunks.  This is one reason I've switched to Perl for text handling jobs - as well as superior pattern matching and text changing abilities (more of which later), you don't have to worry about memory allocation, variable lengths and so on
  841. In the examples above there's a simple print command to show us the content of the file on screen, but with the addition of the content header, you could output it to a web page
  842. #!/usr/bin/per
  843. $text=""
  844. open FILEHANDLE, "<datafile.txt" or die("Unable to open the file for reading")
  845. while ($line=) 
  846.   $text.=$line
  847.  
  848. close FILEHANDLE
  849. print "Content-type: text/html\n\n"
  850. print "<pre>"
  851. print $text
  852. print "</pre>"
  853. This version has the mime type header to denote that this is HTML content, and puts <pre> tags around the text so that a text file can be displayed as typewriter-style formatted text.  However, you could create a web page, cut it up into several pieces, and then be able to produce a CGI program (or several) that use these files to output something with the same look and feel as the rest of your site.  For instance, have a standard header file, a standard footer file, and put your dynamic CGI content in the middle like the meat in a sandwich
  854. Here's a program to write data to a file
  855. #!/usr/bin/per
  856. $text=""
  857. open OUTPUT, ">datafile2.txt" or die("Unable to open the file for writing")
  858. print OUTPUT "some text\n"
  859. print OUTPUT "some more text\n"
  860. print OUTPUT "even more text\n"
  861. close OUTPUT
  862. Okay, so it outputs a pretty boring file, but you get the picture.  The print statement has OUTPUT - the file handle name I've used this time - on each line before the actual text to be sent to the file.  That print command's pretty useful huh?  You can use it for printing to the screen, to a web page, and now a file!  Notice that it doesn't have a comma between the file handle and the content to be printed - you can comma separate more than one piece of text to be printed so having one after the file handle would confuse it greatly
  863. It can get a bit boring if you have a few hundred lines of HTML to print out, having to have the file handle on every line, so here's a bit of a cheat
  864. #!/usr/bin/per
  865. $text=""
  866. open OUTPUT, ">datafile2.txt" or die("Unable to open the file for writing")
  867. select OUTPUT
  868. print "some text\n"
  869. print "some more text\n"
  870. print "even more text\n"
  871. select STDOUT
  872. close OUTPUT
  873. By selecting OUTPUT you're telling Perl that you want everything you're about to print to go to that file handle.  When you're done you then select the standard output "file handle" called STDOUT (which, of course, stands for STandarD OUTput); I know it's not strictly a file but that's how it works.  There's an even cooler trick you can use to get rid of the print statements too
  874. print <<END
  875. Mary had a little bea
  876. It was the loving kin
  877. And every where that Mary wen
  878. She had a bear behind
  879. EN
  880. Here you have one print statement that says "continue printing everything that follows until you find the end marker", which in this case happens to be the word END in capital letters (which has to come at the very start of a line).  It doesn't have to be the word END, and it doesn't have to be in caps, but it's easy to see that way
  881. Finally, you can use a very simple test to see if a file exists: -e as in
  882. if (-e "file.txt") 
  883. ..
  884.  
  885. -r is to check if the file's readable, and -w checks for writable
  886. Taking User Input
  887. Now you know how to print, load and save data it's time to get some input from your visitors.  You'll probably already be familiar with forms, which is how the information is entered and sent off; now you can see the other side, how that data is received and used
  888. Fortunately there's a very easy way to find out what a user's sending to your program - you can use a Perl module, a chunk of code already provided, to do all of the hard work.  The module in question is called CGI, and can basically do pretty much everything you need to construct a web page, but there's a LOT to learn if you start down that road.  For instance, consider this program
  889. #!/usr/bin/per
  890.  use CGI;                                # load CGI routine
  891.  $html = new CGI;                        # create new CGI objec
  892.  print $html->header,                    # create the HTTP heade
  893.        $html->start_html('hello world'), # start the HTM
  894.        $html->h1('hello world'),         # level 1 heade
  895.        $html->end_html;                  # end the HTML
  896. it's a very simple way to construct a web page using very few commands, but personally I find it a bit remote, and as the CGI Perl module is so large it could easily be the subject of a whole other article or series of articles.  So, we'll just be using a simple part of this module
  897. #!/usr/bin/per
  898. use CGI qw(param)
  899. $name=param("name")
  900. This tells Perl to load the bit of the CGI module we need - the (param) part; and then it looks for a parameter called "name" and store it in $name.  That's all you need to collect the input from a simple form, and it has the benefit of working for both POST and GET method forms
  901. There now follows an example web page containing a form, and a simple CGI to respond to the data sent via the form
  902. <html><head><title>Form</title></head>
  903. <body text="#000000" bgcolor="#FFFFFF">
  904. <form method="GET" action="/cgi-bin/getname">
  905. Enter your name: <input type="text" name="name">
  906. <br><input type="submit">
  907. </form>
  908. </body>
  909. </html>
  910.  
  911. Form
  912.  
  913. Enter your name: 
  914.  
  915.  --
  916. #!/usr/bin/per
  917. use CGI qw(param)
  918. $name=param("name")
  919. print <<END
  920. Content-type: text/htm
  921. <html><head><title>Form Response</title></head>
  922. <body text="#000000" bgcolor="#FFFFFF">
  923. <h1>Hello, $name!</h1>
  924. Hi!  You said that your name was $name, and I believe you
  925. </body></html>
  926. EN
  927. Of course there's no check being done to make sure that something valid was entered, so you might want to make sure
  928. #!/usr/bin/per
  929. use CGI qw(param)
  930. $name=param("name")
  931. print <<END
  932. Content-type: text/htm
  933. <html><head><title>Form Response</title></head>
  934. <body text="#000000" bgcolor="#FFFFFF">
  935. EN
  936. if ($name ne "") 
  937.   print "<h1>Hello, $name!</h1>\n"
  938.   print "Hi! You said that your name was $name!\n"
  939. } else 
  940.   print "<h1>No name entered</h1>\n"
  941.   print "You didn't enter a name - don't you know what it is?\n"
  942.   print "<br><a href=\"/formpage.html\">Click here to go back to form</a>\n"
  943.  
  944. print "</body></html>"
  945.  
  946. When checking against bits of text you can't use the equals sign, as this is what sets variables; to check, you have to use eq and ne, which mean equals and not-equals.  So, in the example above I checked to see if there was anything entered in $name (not-equal to empty - "").  With numbers you'd use == or !=
  947. if and else were used in that example; to have more than two alternatives you need elsif (note the lack of second "e").  For example
  948. if ($name eq "Rich") 
  949.   print "Greetings, oh master!\n"
  950. } elsif ($name eq "Tim") 
  951.   print "Wotcha Timmy!\n"
  952. } elsif ($name eq "David") 
  953.   print "Oi, Dave!\n"
  954. } else 
  955.   print "Do I know you?\n"
  956. }
  957. Form Response
  958. EN
  959. if ($name ne "") 
  960.   print "Hello, $name!\n"
  961.   if ($name eq "Rich") 
  962.     print "Greetings, oh master!\n"
  963.   } elsif ($name eq "Tim") 
  964.     print "Wotcha Timmy!\n"
  965.   } elsif ($name eq "David") 
  966.     print "Oi, Dave!\n"
  967.   } else 
  968.     print "Do I know you?\n"
  969.   
  970. } else 
  971.   print "No name entered\n"
  972.   print "You didn't enter a name - don't you know what it is?\n"
  973.   print "Click here to go back to form\n"
  974.  
  975. print ""
  976.  --
  977. Processing content - Regular Expressions
  978. Regular expressions are a powerful way of looking for patterns within data and acting upon them.  In BASIC you really just have the INSTR command to look for a specific piece of text inside a larger bit of text, but in regular expressions you can match variable length bits of arbitrary data such as zero or more letters, or at least one non-space character, or between 2 and 4 numbers
  979. The basic match is as follows
  980. $maintext = "this is some text, and here are some numbers: 12345"
  981. if ($maintext =~ m/(\d+)/) 
  982.   print "The numbers were '$1'\n"
  983. }
  984.  
  985. $variable =~ m// does the match against $variable; \d means a digit (number), the + means there has to be at least one, and the round brackets around the \d+ means that this is a group, the contents of which will be returned in $1 when the match is made.  If you have more than one group the results will be available in $2, $3 and so on
  986. Here's another one
  987. while ($webpagetext =~ m~(<table.*?</table>)~sgi) 
  988.   # do something with the contents of that table
  989. }
  990. This matches the opening and closing tags of a table, and all the contents in between.  Taking the new things in order, notice how I'm using m~~ to do the match this time instead of m// - you can use pretty much any character after the m so long as you match it again at the end, and of course you can't use that character in the pattern match in between without escaping it - putting a \ in front.  Basically the / character is used so much in HTML that you'd start to get zig-zig patterns as you write \/ all the time, so I use ~ from the start as it's very rarely used in web pages (apart from some URLs)
  991. .*? is actually three things in one - the full stop (.) means any character; the star (*) means zero or more times; and in this context the question mark means "as soon as possible", which basically means that the first closing </table> rather than any others in the page (this of course means that the match won't work correctly in a page that uses nested tables, but this is just a simple example).  Note that there are quite a few characters that are used in a special way, and to use them in plain text you have to escape them - add \ to the front
  992. Here's a list of special characters available in Perl regular expressions.  It's not an exhaustive list but should give you enough to experiment with
  993.  .any character
  994. \sany whitespace character (tabs, linefeeds etc.)
  995. \nlinefeed
  996. \ttab
  997. \dany number
  998. \Dany not-number
  999. \wany charcater valid in words
  1000.  *zero or more times
  1001.  +one or more times
  1002.  ?optional
  1003. ()match group
  1004. []group of characters (such as [a-z] meaning any (lowercase) letter)
  1005. {}specific number of times (as in {1,2} for 1 or 2 times, {,4} for up to 4 times, {100,} for at least 100 times)
  1006. And don't forget that $, @ and \ characters all have to be escaped because they're used by Perl to mean something else
  1007. After the pattern has been closed, notice the sgi on the end.  These modify how the match is done; i means case-insensitive, so it'll match <TABLE as well as <table; because we're in a while loop we use the g option, which means that it will remember the position of the last match and start from after that next time - so you don't keep matching the same piece of text over and over; and the s treats the whole piece of text as one big lump, rather than as a series of lines - this means the match on "." (any character) will also match linefeeds instead of ending a match at the end of a line
  1008. If you want to do substitutions instead of just matches, use the s/// method instead.  This can search and replace every instance of a match with the minimum of effort.  For instance
  1009. $webpagetext=~ s/Man Utd/Nottm Forest/g;
  1010.  
  1011. The g means that it'll search and replace them all, without having to set up a loop
  1012. The following will match all opening and closing <i> tags and replace them with <em> tags instead.  Note that there's an optional match for / - (/?) - in the first part, and in the second part \1 (the same as using $1 outside the match) is used to put the value of what was found into the replacement.  That means that if <i> is found it's replaced with <em> (because \1 is empty), but </i> is replaced with </em> (because \1 will contain the "/" character)
  1013. $webpagetext=~ s~<(/?)i>~<\1em>~gi;
  1014. Some text\n"
  1015. $webpagetext=~ s~~~gi
  1016. print $webpagetext
  1017.  --
  1018. That's quite a lot to take in, and this is probably too large a subject area for this article to cover in any more depth, so here's a usable example
  1019. File latest.txt
  1020. <newsitem>
  1021.  <headline>A headline</headline>
  1022.  <date>the date</date>
  1023.  <author>the author</author>
  1024.  <article>some text about the news item</article>
  1025. </newsitem>
  1026. <newsitem>
  1027.  <headline>Another headline</headline>
  1028.  <date>another date</date>
  1029.  <author>same author</author>
  1030.  <article>some more text about another news item</article>
  1031. </newsitem>
  1032.  A headline
  1033.  the date
  1034.  the author
  1035.  some text about the news item
  1036.  
  1037.  Another headline
  1038.  another date
  1039.  same author
  1040.  some more text about another news item
  1041. --
  1042. #!/usr/bin/per
  1043. $text=""
  1044. open INPUT, "<latest.txt"
  1045. while ($line = <INPUT>) 
  1046.   $text.=$line
  1047.  
  1048. close INPUT
  1049. while ($text=~ m~<newsitem>(.*?)</newsitem>~sgi)
  1050.   $newsitemtext=$1
  1051.   if ($newsitemtext =~ m~ <headline>(.*?)</headline>~si) 
  1052.     print "<h2>$1</h2>\n
  1053.   
  1054.   if ($newsitemtext =~ m~ <article>(.*?)</article>~si) 
  1055.     print "$1\n\n"
  1056.   
  1057. }
  1058.   $text.=$line
  1059.  
  1060. close INPUT
  1061. while ($text=~ m~(.*?)~sgi)
  1062.   $newsitemtext=$1
  1063.   if ($newsitemtext =~ m~ (.*?)~si) 
  1064.     print "$1\n
  1065.   
  1066.   if ($newsitemtext =~ m~ (.*?)~si) 
  1067.     print "$1\n\n"
  1068.   
  1069.  
  1070.  --
  1071. What this does is go through the latest.txt file and isolate each news item (anything inside <newsitem>...</newsitem>.  It then does a couple more checks to pick out and print the headline and article text from each of these news items.  This is essentially how the Icon Bar's news service works (download http://www.iconbar.com/news/latest.txt to see how similar the data is!)
  1072. Example code
  1073. By now you should have some of the building blocks you need to start writing some of your own programs.  At the end of this article I'll set you a couple of tasks, but first, as I feel like I know you can can trust you, here's some of my simple programs that you can use in your own creations
  1074. Random pick
  1075. #!/usr/local/bin/per
  1076. print "Content-type: text/html\n\n"
  1077. print "<html><head><title>BOFH-style excuses</title></head>\n"
  1078. print "<body bgcolor=\"#ffffff\" text=\"#000000\">\n\n"
  1079. print "<h1>BOFH Excuse Server</h1>\n"
  1080. open (BOFHEXCUSES, "<excuses.txt"
  1081.       or die("Sorry, no excuses...")
  1082.  while ($line = <BOFHEXCUSES>) 
  1083.     chomp $line
  1084.     push @excuses, $line
  1085.  
  1086. close BOFHEXCUSES
  1087. $rnd = int(rand(@excuses))
  1088. print "The cause of the problem was<br>\n $excuses[$rnd]\n"
  1089. print "</body></html>"
  1090. This is a program to load in a file called excuses.txt. The chomp command is used to trim any line feeds off the end of each line, and then that line is stored in an array called excuses - push @excuses, $line; puts the data in $line into the next available slot in the excuses array
  1091. If you do a mathematical type check on @excuses (such as $arraynumber=@excuses) then you get the number of items stored in the array; remember though that if there's ten items, they'll be numbered 0-9.  By using the rnd function you get a number between 0 and the number of items in the array (minus a small fraction), and int makes this value an integer, so $rnd should return a whole number that corresponds to an item in the array.  $excuses[$rnd] is the way of getting one particular item out of that array - for instance $excuses[0] will get the first item, $excuses[1] the second and so on
  1092. This program is one I've been running on the Acorn Arcade website since the original stopped working (although it did allow me to pinch the data file), at http://www.acornarcade.com/cgi-bin/BOFH; this version loads the data usin
  1093. open (BOFHEXCUSES, "</virtual/www.acornarcade.com/webpages/ssi/excuses.txt") (etc.), and so if you go to http://www.acornarcade.com/ssi/excuses.txt you should be able to download this file for yourself.
  1094. The upshot is that you have a file containing small bits of data which you load in and pick one at random.  In this case it was an "excuse" - for instance something like "It was cosmic rays" or "The Internet hasn't paid it's bill and so it's been cut off", so someone in technical support can have a new plausible excuse for your internet connection not working - and this was displayed straight away.  It could be something else like a poem (a random haiku is used on the Acorn Arcade website if you try to access a file that isn't there) or a wise saying (such as the Pearl of Wisdom at the top of the Icon Bar front page); but it could also be a piece of HTML - perhaps to display a random image? - or even a colour (or set of colours) which you can use throughout a web page so that when someone goes to your site for the first time the whole page is in blue, but next time it's all green and so on
  1095. Fetch a file
  1096. #!/usr/local/bin/per
  1097. use LWP
  1098. fetch_file("http://www.iconbar.com/news/latest.txt")
  1099. print $bodytext
  1100. sub fetch_file 
  1101.  $url = $_[0]
  1102.  $browser = LWP::UserAgent->new()
  1103.  $browser->agent("Mozilla/4.0 (compatible; MSIE 4.01; Windows95)")
  1104.  $webpage=$browser->request(HTTP::Request->new(GET => $url))
  1105.  $bodytext=$webpage->content
  1106. }
  1107. This uses the LWP module (not present in RISC OS Perl but included as standard in other versions) to fetch a page over the Internet.  I've made the code to do this into a sub-procedure, so you can see it uses fetch_file("http://www.iconbar.com/news/latest.txt");, which jumps to sub fetch_file { - the start of the procedure called fetch_file.  These procedures be sprinkled anywhere within the program, but I put them near the end for easier reading of the code.  You can however use the require or use commands at the start of your program to include snippets of code from an external file, which essentially dumps new code into the start of your program, but you can still have procedures in these files
  1108. The underscore array (@_) contains whatever's passed to this procedure, so $url = $_[0]; picks out the first parameter sent to this procedure.  You could send more than one parameter - for instance make_headline("Some Text","red","center") would need $text=$_[0]; $colour=$_[1]; and $align=$_[2] to pick them all up, or in the file fetch example you could just use a loop to find out what's in every position in the @_ array and fetch every page requested
  1109. You can see that the script is pretending to be Internet Explorer 4 running on Windows 95 (so that your script doesn't fail for not being the right browser type, or more likely so that you don't show up on someone's web logs for pinching one of their pages!), and that at the very end of the procedure $bodytext is set up to contain the contents of the web page.  The procedure ends and we then jump back up to the top of the program, which prints $bodytext (not very useful as the file in question is not HTML, but never mind)
  1110. You can also check to see if the fetch was successful by using if($webpage->is_success) as in:
  1111. fetch_file("http://www.iconbar.com/news/latest.txt")
  1112. if($webpage->is_success) 
  1113.   print "I got it!"
  1114. } else 
  1115.   print "Sorry, fetch failed."
  1116.  
  1117. You should then use regular expressions etc. to process the data and print out the bits you need
  1118. Mail Handling
  1119. What follows is a complete mail handling form so that people can enter their email address and a short message into a web page form, and the results will be emailed to you.  You need a web page with a text input box with the name email (to collect the email address of who's sending the message), and another text entry box (or preferably a text area) called message to get this program working.  Oh yes, and don't forget a submit button to send it off!  It also requires a program called sendmail to be in the directory /usr/sbin which is where it is on my Unix system (try /usr/lib if it's not found)
  1120. #!/usr/bin/perl
  1121. use CGI qw(:param)
  1122. $owner="webmaster\@richardgoodwin.net"
  1123. $subject="message from website"
  1124. $from=param("email")
  1125. $message=param("message")
  1126. # Make sure parameters were defined (they should be
  1127. # even if correct values are not supplied, if yo
  1128. # have the right inputs in your web page, and the progra
  1129. # won't fail if you don't do this, but it's better practice.
  1130. $from="" unless(defined($from))
  1131. $message="" unless(defined($message))
  1132. # if the sender did not specify an email address, use this instead
  1133. $from="webmaster\@richardgoodwin.net" if ($from eq "")
  1134. send_email($from,$owner,$subject,$message)
  1135. # Return a web page or the browser will complain 
  1136. # it doesn't have to be fancy, but you might want to giv
  1137. # the user a link back to your site, and maybe jazz it u
  1138. # to look more in keeping with the rest of your site's design
  1139. print <<EOF
  1140. Content-type: text/htm
  1141. <html><head><title>Thanks!</title></head>
  1142. <body>
  1143. <h1>Thanks!</h1>
  1144. Thank you for for sending me an email 
  1145. your message has been sent on to $owne
  1146. and should arrive shortly
  1147. </body></html>
  1148. EO
  1149. sub send_email 
  1150. $frm=$_[0]
  1151. $to=$_[1]
  1152. $sub=$_[2]
  1153. $msg=$_[3]
  1154. open SENDMAIL, "|/usr/sbin/sendmail -oi -t -odq
  1155.      or die("Can't run sendmail\n")
  1156. print SENDMAIL <<EOF
  1157. From: $fr
  1158. To: $t
  1159. Subject: $su
  1160. $ms
  1161. --
  1162. $frm doesn't have a .si
  1163.  
  1164. EO
  1165. close SENDMAIL
  1166.  
  1167.  
  1168. Thanks!
  1169. Thanks!
  1170. Thank you for for sending me an email - your message has been sent on to $owner and should arrive shortly
  1171. EO
  1172. sub send_email 
  1173. $frm=$_[0]
  1174. $to=$_[1]
  1175. $sub=$_[2]
  1176. $msg=$_[3]
  1177. open SENDMAIL, "|/usr/sbin/sendmail -oi -t -odq" or die("Can't run sendmail\n")
  1178. print SENDMAIL 
  1179. You can use the send_email procedure to send email in a variety of other ways - to automatically thank people for their messages/requests, to warn you if there's an error in one of your scripts, to be able to send email when you aren't near your email client and so on.  Notice how, when you're specifying an email address ($owner in this case) you have to escape the @ sign as it's a special character - otherwise Perl might confuse part of your email address for an array
  1180. Your turn
  1181. Now you've got got the basics of Perl, how about trying some of these projects
  1182.   Write a simple script to display something based on time - check the hour so you can say good morning, good afternoon, good evening and good night at the correct time, or change the background colour to be appropriate to the time of day
  1183.   Write something to display a random image, perhaps with a link to a page or site appropriate to that image
  1184.   A simple text web counter - save the counter value to a file, then load it, use $counter++ to increment it, display this in a page and then save the value back to dis
  1185.   Create a simple guestbook - take user input, make sure it isn't blank, and add this to a file (either append it to the end using >> to open the file, or load the file into memory, add the new data to the front - $data=$newdata.$data - and then save it back to disk).  Create a new program to display the results.  If you're really feeling cocky try doing both receiving and displaying in one program, using a parameter to switch between the two actions (example: $action=param("action"); $action="printform" if ($action ne "submitdata"); )
  1186. Think about a more complex versions of the counter and guest book where you make sure the file isn't being accessed by two versions of the program at the same time - can you use locking (either a command, or by saving a temporary file to disc) to make sure any copies of the program know another copy is using it?  Can you use the sleep command to try again in a little while?  In a while loop so you can try five times and then quit?  Use a parameter so more than one website can use your script?  Use something like the GD library to create a graphical counter
  1187.   
  1188. Further reading
  1189. O'Reilly are the experts in printing quality programming reference books, and the three books most people should take a look at are Learning Perl (a beginners guide), Programming Perl (if you're confident enough to go straight for a "proper" programming book or have spent a while learning Perl and want to move on) and Perl in a Nutshell (a reference of all the commands in Perl and the most commonly installed modules)
  1190. The Perl Cookbook has lots of recipes, sorry, useful example code, but if money's tight or you're not sure you want to make that level of commitment then there are some good websites you might want to take a look at first.  http://www.perl.com/ is the obvious contender - which also happens to be an O'Reilly production but for free (I really should have asked for commission from O'Reilly shouldnt I? :)  The Perl Monks (http://www.perlmonks.org/) is a home for all sorts of Perl-related stuff from code tips and examples to writing Perl poetry(!).  And finally the Webmonkey over at Wired has all sorts of good things at http://hotwired.lycos.com/webmonkey/programming/perl_cgi/.
  1191. Richard Goodwin
  1192.  
  1193.  
  1194. ÿÿÿÿVOLUME1/ISSUE7/LCDMONITOR/INDEX.HTM Volume 1, Issue 7, Explan/VideoSeven LCD Monitor
  1195.  
  1196.  
  1197.  
  1198.  
  1199.  
  1200. Explan/VideoSeven 17 inch LCD Monitor
  1201. Andrew Rawnsley throws his old CRT monitor in a skip.....
  1202. Flat panel LCD monitors have been around for a while now, but due to the high costs involved (just one particle of dust during manufacturing can render a whole panel unsaleable) it has been hard for many of us to justify purchasing one, when comparing with traditional CRT (cathode ray tube) monitors.  In order to bring prices to the sub-£500 mark, manufacturers have concentrated on panels with 15" diagonal size, which are a little smaller than most 17" CRT monitors.
  1203. If you wanted a larger screen, most companies jumped to 18" panels usually costing £2000 or more, which is clearly beyond the depths of most people’s pockets!  The L17A, however, solves this problem rather elegantly by offering a high resolution, half-way-house with 17" diagonal (equivalent to a 19" CRT) and a price tag just creeping under the £1000 price point.  It’s still not cheap, but when you consider that an extra inch will cost you nearly twice as much, it puts things into perspective.  Oh, and thanks to Explan, it just happens to be fully RISC OS compatible.
  1204. CRT monitors vs LCD panels
  1205. Since this is likely to be many people’s first proper experience of LCD flat panel monitors (on desktop computers, anyway!), it is, I feel, worth digressing into a little background.  LCD panels are quite unlike their CRT brethren - we have already seen that the diagonal sizes quoted are pretty accurate for a start!  This in itself is an important concept.  When you purchase a 17" CRT monitor, the diagonal distance of the viewable portion of the screen can be anything from 15.5" up to over 16" - for example, the old Acorn AKF85 (actually a Philips monitor rebadged) weighs in about 15.7" yet is sold as a 17" monitor!  Contrary to this, the L17A really does have a 17" viewable diagonal distance, resulting in substantially more screen real-estate.  For this reason, it is best to compare the L17A with a 19" CRT.
  1206. The VideoSeven LCD monitor
  1207. The big attraction of an LCD monitor (I must stop accidentally typing LSD!!!) (I mis read this as "taking" the first time and fell off my chair -ED) is its physical dimensions.  All the table top surfaces here have just over a 2 foot depth to the wall making a 17" CRT monitor the largest traditional screen possible in the available space.  Indeed, even with a 17" monitor, it was tricky to get a keyboard in as well!  I believe this is a problem faced by many of us - balancing the need for more screen space with physical constraints and the amount of squinting needed as higher resolutions make things smaller and smaller.  The L17A panel itself is certainly very thin front to back, just 3-4 inches, but it is hampered by an overly large base which is 9-10" front to back!  Still it fits nicely in the space vacated by the old 17" with room for the keyboard in front and space for extraneous cabling behind - it’s worth commenting that connections to the panel are made vertically (ie. from the bottom upwards) so cables don’t protrude backwards.  This is a nice touch, but rather offset by the large base!
  1208. However, the single biggest difference between a traditional monitor and an LCD panel is in the way the image is produced.  LCD panels are constrained by the number of physical "pixels" on the screen.  Most small 15" panels are limited to 1024x768 resolution for just this reason - an often overlooked deficiency!  The L17A has a native resolution of 1280x1024 which is more than acceptable.  Indeed, most people will find this an ideal resolution to work in, and it displays well under RISC OS.  Explan actually provide another, higher resolution of 1360x1024, although I suspect the monitor is scaling this to suit!  Screen resolutions below the native one are achieved by scaling the picture, and this is often one of the most telling tests for a panel - scaling needs to be smooth and without performance impact.
  1209. Since LCD panels are made up of a fixed number of pixels (rather than the moving ray of a CRT monitor), the concept of refresh rate is almost meaningless, as a pixel will either be on or off (well, on in any number of colours!)  Since the screen isn’t being continually "redrawn" as such by the monitor, flicker is non-existent, which takes some getting used to.  Since your RISC OS computer generates an analogue signal, it will still be working on a "refresh rate" system, but like frames per second in a computer game, this simply determines how smooth motion is.  Explan use a refresh rate of 60Hz at each resolution, which is very sensible, and also frees up some of you’re computer’s performance which would otherwise be taken up by redrawing the screen all the time.  It is also worth saying that as a by-product, the 56Hz required for 800x600 in 16 million colours on a RiscPC is rock steady, making that a perfectly usable mode for checking out photographic images, without eyestrain.  Since a RiscPC with 2Mb of VRAM can display all the modes available on the L17A, the only advantage of extra graphics capability (such as a ViewFinder card) is in the number of colours available.
  1210. One final comment to conclude our comparison of monitor types concerns brightness and contrast.  These too, tend to be different from their CRT counterparts, and the usual methods of calibrating a screen tend not to work for LCD monitors.  It took me much experimentation to find good settings, although the lighting in the office doesn’t help!
  1211. The Review Proper
  1212. Finally, you may think to yourself!  However, the background to LCD panels is absolutely critical to the review of such a beast.  Having been used to CRT monitors for so many years, my initial experiences of the L17A were not entirely positive - indeed I must confess to feeling a little disappointed when I first used the unit just before Christmas.  My opinion has now changed, but only after extensive trial and error.  Fortunately, my recommended settings are included at the end!
  1213. The LCD panel is significantly lighter than it’s CRT counterparts, but I would suggest slightly more fragile.  It came in a sizeable box, although nothing compared with the huge 19"+ CRT boxes that grace the local computer store!  As usual, there was the appropriate PC driver disc, wall mount fixtures and a surprisingly useful manual indicating how to set it up, and attach cables etc.  Explan had thoughtfully added in some RISC OS instructions and a disc with an appropriate monitor file (more on this later).  They also made rather a fuss over the cable used.  I won’t bore you with the rigmarole, but suffice to say that you will need to know which machine you intend to use the panel on before you order it from Explan, as the panel is very cable-sensitive (this is a problem which equally affects PC owners, I’m told!).  As far as my experiences were concerned, I simply attached the monitor using the supplied cable, followed Explan’s instructions, and low and behold, it all worked first time.
  1214. Screen modes
  1215. LCD panels are capable of auto-adjusting to cope with the screen mode being used, and remembering this setup.  Anyone who has struggled to make CRT monitors display the picture in the correct place on the screen will adore this feature.  You need to pick it from the panel’s simple menu, and the screen will judder into position.  Once complete, the setting will be saved, and your desktop will fill the available area and no more.  Very nice!
  1216. My default desktop resolution is now 1360x1024 which, whilst beyond the native pixel resolution of the panel, seems perfectly usable, and the extra screen area is most welcome.  The scaling when moving between resolutions is excellent, coping well with potential problems such as text rendering.  Whilst it isn’t necessary to change screen resolution very often when working in the Desktop, it can be helpful when you need to check things in more colours.  The big test for the resolution handling of the panel came when running games or a PC card, which often require unusual modes.  This proved to be a major stumbling block initially, as Explan had clearly not considered the more diverse usage of machines when creating the Monitor Definition File, with 640x480 being the lowest supported resolution!
  1217. I have subsequently spent the time adding extra screen modes with !MakeModes, and now all the games I’ve tested display correctly, although low resolutions appear letterboxed.  Because LCD monitors are more sensitive to mode timings, it isn’t possible to artificially pop them up to full screen, a trick used by GameOn and the like for CRT monitors.  No matter - anyone with a DVD player will be more than familiar with the charms of letterboxing, as will most readers using the standard screen definitions supplied with RISC OS machines.  I have submitted this updated Monitor Definition File to Explan, and I believe that new customers will receive a version of this as standard, solving the problem.  Once suitably updated, the panel has been perfectly happy running Heroes of Might and Magic 2, Doom, Quake and some of the old Krisalis titles.  (And one or two "in-development" bits and pieces...!).
  1218. Ghosting
  1219. One common problem with LCD panels is that of "ghosting" - a delay in reacting to changes on the screen.  I have to say that the L17A does suffer from this when dragging windows around rapidly, although not in any way which affects usability.  For example, if I now drag the window I’m typing into around the screen at speed, it will suffer "motion blur" effects, a bit like "pointer trails" on certain other operating systems.  However, one has to ask how often you suddenly start madly moving windows all of the place!  The simple answer is "you don’t very often" and since there is no screen corruption, this is a very minor thing.  Indeed, I had to think long and hard as to whether I even mentioned it at all!  With it’s VRAM caching, I suspect RISC OS 4 may not help on this either, as dragging windows around on a CRT monitor can give a little trail!  It is, perhaps, worth adding that when testing games on the panel, the expected ghosting didn’t appear.  I had anticipated the panel being almost unusable for most games, but in fact there are no complaints on that score.
  1220. Viewable Angles
  1221. One of the most hotly discussed features of LCD panels is that of viewing angle.  With some panels, looking from oblique angles can radically distort colour perception, and even render the screen unreadable, either due to light reflection or contrast problems.  The L17A doesn’t appear to suffer at all in this regard, although it is advised that you be looking at the screen square on when adjusting brightness/contrast as there is some minor variation at extreme angles, but nothing which would affect use
  1222. Solid Colour Areas
  1223. Whilst beginning to sound like a PC labs tester, another good test for any screen (or printer) is to display solid areas of colour, especially mid-greys, blues, reds etc.  Whilst there’s no problem with a plain white blank document window, for example, a large grey Draw rectangle does exhibit slight vertical banding.  Similarly, if you remove the backdrop tile from the desktop, the resulting grey is similarly affected.  It is by no means serious - having just removed the background now, I have to look for the effect to see it.  Certainly, the L17A performs much better in this regard than other LCD panels that I have seen, but it isn’t perfect, but what is?  As a side note, this "sold colour" test is somewhat artificial, as it is very rare to have large blocks of the same colour.  The moment you apply a texture (eg. Filer windows) then the problem is gone.
  1224. Sound(!)
  1225. You may be thinking that sound is a rather odd category to asses a screen on, but the L17A includes a pair of stereo speakers just below the screen.  Whilst these are not going to set hi-fi enthusiasts’ ears alight, they are a major improvement over the rather poor inbuilt speaker found in most RISC OS machines.  My initial inclination (having tried monitor speakers before) was to set the volume to maximum and do my best to ignore the distortion that this inevitably brings.  You can imagine my surprise when I discovered that a setting of 20 (less than 2/3rds of maximum) was more than loud enough (many people will want 15 or less) resulting in much less distortion.  Whilst no match for expensive speakers, the sound produced certainly beats the £15 "multimedia" speakers from PC World and the like!  The 3W per channel rating once more proves how ridiculous such measures are for speakers - Mhz processor speeds, anyone?!!
  1226. Tweaking the Panel
  1227. As I said earlier, my initial experiences with the panel weren’t 100% favourable, and it is thanks to a number of tweaks that my opinion has changed.  It is worth saying that the lighting here is not at all suited to LCD panels, being provided by fluorescent strips a few foot above the computers.  However, the first thing to note is that as supplied you will probably find the monitor excessively bright, a trick the manufacturers use to get round the fact that its contrast/brightness range isn’t as broad as other models in the same range.  By supplying it set similarly to other models, potential customers viewing the whole range won’t notice differences, but when set up at home, you may well find yourself suffering the kind of eyestrain normally associated with flickery low refresh rates on CRT monitors!
  1228. My current contrast is 25, whilst my brightness setting is just 4!  I find that this gives a balanced display which I can use for hours on end without much eyestrain.  Additionally, some lower resolutions initially appeared jumpy, as if the monitor definition file was wrong.  This was cured by adjusting either the Clock or Phase settings by + or -1.  I do still get a rather odd streaking effect for the first 5 seconds when turning on in the morning, but this cures itself by the time the desktop is reached.  I don’t think this is a monitor type misconfiguration, but since it sorts itself out so quickly and then works fine all day long without a hiccup, I don’t feel it is worth worrying about.
  1229. Conclusions
  1230. Having used the L17A for over a month now, I can confirm that I am very impressed.  What is more, the areas I expected to be weak (non-native screen resolutions, fast game graphics etc.) turned out to be almost red herrings.  The key to successful use of the panel is to sort out the brightness and contrast settings for the lighting conditions in the room.  Explan were quite helpful in this regard, and it’s probably a good plan to check everything you think you know about conventional monitors in at the door before starting out with LCD panels.
  1231. One warning - when going back to traditional CRT monitors, you will find them to be flickery fishbowls (most CRT monitors have slightly curved screens), and you’ll wonder how you managed to live with them for so long.  Will I be installing L17A’s on all the machines here?  No, because my pockets aren’t that deep, and because it’s helpful to test things on other monitors.  But with money no object.....  I’ll take two!
  1232. Product details
  1233. Product:
  1234. 17" LCD Monito
  1235. Supplier:
  1236. Explan
  1237. Price:
  1238. £999+VAT (£1173.82 inclusive
  1239. Address:
  1240. PO Box 32, Tavistock, Devon, Pl19 8Y
  1241. Tel:
  1242. 01822 61386
  1243. WWW:
  1244. E-mail:
  1245. sales@explan.co.u
  1246.  
  1247. Andrew Rawnsley
  1248.  
  1249.  
  1250. ÿÿÿÿVOLUME1/ISSUE7/LETTERS/INDEX.HTM Volume 1, Issue 7, Letters Page
  1251.  
  1252.  
  1253.  
  1254.  
  1255. Letters Page
  1256. It's always right, even though its quite..er...it's the RISCWorld letters page.
  1257. Hugh Jampton dons his waterproof keyboard and answers this months letters.
  1258. Dear Sir,
  1259.  
  1260. I Just wanted to say that I've really enjoyed my first year of RiscWorld, and will certainly resubscribe for year 2, but..... a little plea? Any chance that you could consider using ink on the CDs that actually dries? (Is this a Florida humidity problem?) Either the text smudges and looks messy, or (worse!) my pedigree, show-champion, sealpoint Birman cat sits on the disk (well-known method of cats adsorbing information) and ends up with a bum that "... is published and distributed by APDL..."
  1261.  
  1262. I suppose if that's the only complaint I can come up with, you're doing well! Thanks for all the hard work in producing a good and useful magazine.
  1263.  
  1264. Dr Andy Cartlidge
  1265.  
  1266. Thank you Andy, we at RISC World strive to produce the best possible magazine, using the best writers that low wages can buy. The ink is a bit of a problem. We have now changed ink suppliers and hope that that will fix the problem. I can imagine that a feline sitting on non smudge proof ink could be a bit of a catastrophe. Another suggestion from Aaron was to fix the ink on the CD using hairspray before the cat sits on it.
  1267. And now Eric Dobson has been having a spot of bother....
  1268. RE Risc World 1_5CDFS Editor's Rant
  1269.  
  1270. Dear Sir,
  1271.  
  1272. If you want the public at large to buy Risc machines in millions, or at least a few per cent of the tens of millions who use MSPCs, you must expect confusion by the public who are trying to get to grips with, to them, an alien system. They will expect that, if they buy a system said to work, it will work! I am also, unfortunately, one of them. Wanting to upgrade from PC700 OS3.6 I bought OS4 but did not dare fit it (wife rather unhappy that things may go wrong). Am I glad that I have still not tried fitting it.
  1273.  
  1274. I Went to Epsom, Castle persuaded me & wife to buy latest machine as it would do all that a MSPC will do with internet, mail, news, sending and receiving MS docs using Easiwriter. Nightmare ever since! Oregano pathetic (used to use WebsterXL, slow but worked), mail still not working properly and cannot get into news groups after nine weeks of trying. I get Christmas message that if I want to use EasiWriter for MS docs I must spend 60ukp on the upgrade. Not the sales blurb at Epsom.
  1275.  
  1276. Castle say "dont contact us, we dont support anything of the internet package except Oregano, and Castle already know bookmarking does not work, saving web sites does not work, and why should I expect using mail and news to be ready to go?"!!
  1277.  
  1278. I had planned to buy Risc computers for the family on the basis of  Castle's confident sales blurb; it is without doubt now MSPCs only. CDs will not run. Castle say it is the fault of the CD supplier as the CDFS is up-to-date and working properly (or that is implied). The CDs all work on the PC700. TextEase CD will not run properly without crashing - Softease do not understand. I thought I would look at the RiscOS site in your "Editor's rant" - it can not be found I am told by Oregano.
  1279.  
  1280.  
  1281. Am I being unreasonable in thinking that the top-of-range KineticPC delivered at the middle of November would have been fully checked with a CDFS that has updates included. How can a non-Risc expert find out in any case what standard has been installed? Setting up the internet package is a job only for Risc experts.
  1282.  
  1283.  
  1284. This is my rant - an extension of yours - why do not the Risc suppliers make sure that what they sell as working really does work, or give straight forward guidance on what the purchaser may need to do and where to find out?
  1285.  
  1286.  
  1287. So, from Risc World, any guidance on how to get this wretched machine to work as was promised and where I can go (I keep onto Castle to their obvious irritation) for any more useful help. With your rant about CDFS, please, is there any chance of help so that I might finally get CD-ROMs to run without crashing?
  1288.  
  1289.  
  1290. Eric Dobson
  1291.  
  1292. This is a difficult one. The computer doesn't seem to be working correctly. Castle may well be correct that CDFS is up to date, however the latest version is quite possibly the worst! If you can't get to the 
  1293. I have forwarded your e-mail to Castle but have not had a response so far. Now a little website problem...
  1294. Your website looks magic but I cannot find a way to directly subscribe to RISC World?
  1295.  
  1296. Being a typical Scot I am looking for a bargain and would like to get the special offer.
  1297.  
  1298. A T (Sandy) Morton
  1299.  
  1300. Thanks for the comments about the website. You can subscribe to RISC World by clicking on the "Subscribe" button at the top of almost every page.
  1301. Hi Aaeron,
  1302.  
  1303. I have just got issue 6 of Risc World and after using it I find accessing, moving files or doing anything it asks to insert CDROM::Hard after checking at the command line and doing a cat it shows the wobble directory.
  1304.  
  1305. It may be after running that demo and escaping it has changed my filing system default from ADFS.
  1306.  
  1307. Will there be a Risc World cat for all of the discs??!!
  1308.  
  1309. Cheers Peter
  1310.  
  1311. Well I have spoken to Aaron (watch it - ED), there was a slightly awful bit of code in the !Run file for !Wobble that set the CSD (Current Selected Directory) to inside the Wobble application itself. The version on this CD is corrected. In future we will make sure things use proper directories (such as wobble$dir, sorry it was my fault - ED). This edition of RISC World includes a searchable index for the entire first seven issues.
  1312. Last issue we had a letter from Barry Punchard who had a problem running the RISC World CDs....
  1313. Dear Aaron,
  1314.  
  1315. Thanks for the changes made to the current issue of the RISCWORLD start up software. I write to confirm that these have got rid of the problem I reported above.
  1316.  
  1317. It now works fine.
  1318.  
  1319. Thanks, Barry
  1320.  
  1321. Just what we like a satisfied customer, and to quote a famous comedy show "We should have him stuffed". But which show was it?
  1322. And finally a nice little comment from Mike Wilson of the Wakefield Acorn User Group after a posting we placed on CSAA announce...
  1323. "If your Acorn User subscription is up for renewal then why not consider subscribing to RISC World. RISC World is the subscription only CD based magazine for RISC OS users.
  1324.  
  1325. Delivered bimonthly every issue is packed with reviews, features, hints and much much more. A years subscription is only 17.90 ukp in the UK and 19.90ukp for outside the UK."
  1326.  
  1327. And you do get RiscWorld as soon as it is published. I can't say the same as a subscriber since issue 1 of Acorn User :-(
  1328.  
  1329. Mike Wilson.
  1330.  
  1331. Gosh thats actually two satisfied customers, we could mount a display....
  1332. Well thats this letters page over with (thank heavens -ED) I will see you next issue which of course will be volume number 2. So if you have not re-subscribed like Dr Cartlidge now would be a good time to do it. And as a final little surprise here is a photo of Errol the cat after having had RISC World washed off his bum.
  1333. Errol the cat
  1334. Now how often do you get an upside down cat in Acorn User.
  1335. Hugh Jampton
  1336.  
  1337.  
  1338. ÿÿÿÿVOLUME1/ISSUE7/MASTER/INDEX.HTM Volume 1, Issue 7, Master Break - the manual
  1339.  
  1340.  
  1341.  
  1342.  
  1343. Master Break - the manual
  1344. It's on the CD but how do you use it?
  1345. Please note that Master Break needs to be run from a writable medium: if the program cannot write the high score table to disc when it desires, it will crash. We hence recommend that the program is copied to a medium with 1.5Mb of disc space free before playing - a high density disc, a hard disc or a ram disc will be ideal. Do also note that the !MBQ_1 directory MUST be double-clicked on before the main game, otherwise the game itself will crash.
  1346. Instructions
  1347. To leave the "Demo" mode and start the game, press Space or click a mouse button. Select the number of players by using the number keys (1, 2, 3 or 4) or the mouse; then enter the players' names. To indicate that you are ready to play, either press Space or click the mouse on the "OK" button.
  1348. Choose your question answer by pressing the appropriate number key (1, 2, 3 or 4) or by clicking the mouse on the appropriate answer. Select the colour balls by pressing the number key (between 2 and 7) equivalent to the value of the colour, or by clicking the mouse on the selected ball.
  1349. Each player is allowed to pass up to three red questions (the number of passes remaining is indicated by red balls next to the player's name). When the "PASS" icon is lit, press the P key or click the mouse on that icon if you wish to pass.
  1350. In the 2 or 4 player game, if the ball is currently over the pocket in the picture, and you get the answer wrong, this constitutes a "FOUL SHOT". Your opponents will be awarded the appropriate foul shot score.
  1351. At the end of a frame, the game analysis screen will be shown. This screen can also be viewed during the game, before selecting a colour ball, by pressing the A key or by clicking on the analysis icon.
  1352. The volume control window, which pops up after the select player screen, can also be called up when any player is on a colour question, by pressing the V key, or clicking on the "bell" at the end of the timer meter. You may quit the game, when not answering a question, by pressing the Esc key. (Do note that, due to is heritage, this program doesn't exit to RISC OS clearly.)
  1353. RISC World
  1354.  
  1355.  
  1356. ÿÿÿÿVOLUME1/ISSUE7/PACESTB/INDEX.HTM Volume 1, Issue 7, The new PACE Set Top Box
  1357.  
  1358.  
  1359.  
  1360.  
  1361. The new PACE Set Top Box
  1362. Paul Brett sneaked into the launch, what did he find out?
  1363. On Thursday the 15th of February PACE unveiled the prototype of their latest Set Top Box (STB) design. As many RISC OS users will know PACE currently produce the BUSH internet TV, which is based on RISC OS. So the announcement of a new STB design from the market leaders shouldn't come as as much of a surprise, how wrong could one be?
  1364. The PACE PVR STB
  1365. The first important point, this new machine is not based on an ARM processor, not only that but currently the box does not run RISC OS. Instead it is based on Windows CE. The processor is a Hitachi, the graphics chip set is based on the Power VR chip set, oh and the new machine is a direct result of the new deal between PACE and SEGA. SEGA? Yes SEGA, the Japanese games giant has decided to pull out of hardware manufacture and concentrate on software. Under this new deal PACE will be able to produce a STB based on SEGAs 128 bit DreamCast games console chip set.
  1366. The new PACE SEGA logo
  1367. We can all speculate on whether PACE will be porting RISC OS to this box at some future point (Phil Space has - ED) however what we can say is what the new box design will be able to do.
  1368. What is PVR?
  1369.  
  1370. PVR is simply stands for Personal Video Recorder. These devices are becoming increasingly common, indeed many people will have heard of the TiVO device. This can record digital video to its own internal hard disk for later viewing. It also allows you to "pause" live TV and continue watching later - by recording and playing back at the same time so you can effectively watch TV with a delay between what is being broadcast and what you see.
  1371. However the new PACE design is much more than just a PVR.
  1372. The full monty
  1373. The new PACE box can record programs to its own internal 40Gb hard drive. It supports broadband applications including Cable, Satellite and DSL, and it plays DreamCast games. The current design is a prototype. If you look carefully at the picture below you can see the games controllers plug in the top of the machine. On the production machines they will plug in the front.
  1374. The prototype box design
  1375. The 40GB hard drive can store many hours of video, and also up to 60 full games. The concept is simple, the digital information provider adds a " games channel" to their network. The user can then download a demo version of the game free of charge. If they like the game they can rent a copy and it is downloaded over the satellite/cable link to the hard drive. In use this will be very similar to the current system used my Sky Digital allowing you to rent movies.
  1376. Some of the games that have been shown running on the box include Crazy Taxi, Shenmue (an unbelievable game - ED) and the soon to be released Sonic Adventure 2. However the box has more tricks up its sleeve than just playing games. You can also play networked games using the internal modem. These include titles like Quake3 Arena. While playing games you can also have a picture in picture display of any TV channel. It was suggested that a digital camera may also be offered as an option allowing the box to also behave as a video phone, you could then also see the person you are playing against in an on-line game!
  1377. Real time generated graphics from Shenmue2
  1378. Another ability takes the concept of the SEGA VMU (Virtual Memory Unit) even further. These small devices plug into SEGA DreamCast controllers and act as memory cards, however you can also download games to them. When removed from the main controllers they can be used as a sort of miniature GameBoy. The concept is to allow applications and games to be downloaded into some form of portable digital assistant (PDA) that can be used anywhere.
  1379. As far as ports go the new box seems to have an infra red port, four games ports, an expansion port and a modem port. One rumour suggested the inclusion of a USB port in the finished device. Standard DreamCast peripherals, controllers, keyboards, mice, light guns etc will plug straight in.
  1380. As well as showing digital video, with picture in picture, the new box design can be used to surf the internet using either an on-screen keyboard or a special infra red version (similar again to the current Sky boxes). You can also send and receive e-mails.
  1381. PACE have very high hopes for this new design. Indeed Andrew Wallace, Senior Vice President at Pace was quoted as saying that the new box will "create a new games business and a new generation of game players." He was also quoted as saying "There was a pragmatic reason in that it would be relatively straightforward for us to do, given the architectures we already had." And one of those architectures is RISC OS.
  1382. Another Prototype of the PACE STB
  1383. And as for the price, at the moment we can only guess but I would imagine a figure of around £450 would not be too wide of the mark. We know that PACE have the TiVO PVR in their sites. Industry sources also suggest that PACE and Sky have been having some meetings over recent months.
  1384. Now we can only hope PACE will alter the design to allow RISC OS to run on it, the benefits for us in the desktop market would be enormous.
  1385. Paul Brett
  1386.  
  1387.  
  1388. ÿÿÿÿVOLUME1/ISSUE7/PD/INDEX.HTM Volume 1, Issue 7, PD World
  1389.  
  1390.  
  1391.  
  1392.  
  1393. PD World
  1394. Paul Brett with the latest freeware and PD software
  1395. The PD, Freeware and Shareware arena still seems a bit quiet at present, however in true RISC World style we have still managed a host of new releases.
  1396. Accounts - Stephen Murphy
  1397. Easy accounts is a free, easy to use accounts package for use in the home or office. We did include this last issue but Stephen has now written a much improved version and we have decided to include it on this one as well as he has made so many changes
  1398.  
  1399. Accounts made easy
  1400. DrawText - Stephen Murphy
  1401. DrawText is a program that allows the easy creation of Draw text areas. A text area is a package of text that is imported into draw as a text file. Once in draw, it can be manipulated in a way similar to frames in a DTP package, albeit in a more limited form. The draw files demo1, demo2 and demo3 (In the !DrawText.Manuals.Demos directory) show examples of text areas created with DrawText. More details of Draw text areas can be found in the Welcome Guide that accompanies your computer.
  1402.  
  1403. DrawText
  1404. Flash - Loe Smiers
  1405. A new version of the Flash player for RISC OS that now works with almost any browser, including Oregano V1.10. Flash is the streaming media created by Macromedia and used by a number of big name companies. To view flash files your web browser must support the Acorn plugin protocol. You also need at least 4 Mbytes of RAM. As !Flash is dependent on a web browser and the browser also needs some memory this will mean in practice that you need 8 Mbytes of RAM to view a moderate sized flash file. You also need the nested wimp manager (version 3.98 or higher).
  1406.  
  1407. Flash Player
  1408. FTPc - Colin Granville
  1409. A new version of the very popular internet FTP (File Transfer Protocol) client. FTPc makes it easy to upload or download files using real drag and drop, something PC's can only dream about. Two very comprehensive on-line HTML manuals are provided, one for users and one for programmers. I strongly suggest reading the relevant manual before using this very powerful and useful package.
  1410.  
  1411. FTPc
  1412. MakeCal - Stephen Murphy
  1413. MakeCal is a program to generate wall planners and calendars in Draw file format. It does this via a simple to use WIMP interface, allowing calendar creation in seconds. Since the calendar is in Draw format, it can easily be re-scaled or edited to suit you needs before printing.
  1414.  
  1415. MakeCal
  1416. NetTime - K. Wright
  1417. NetTime keeps a record of how long the program has been running since it was started, and also works out how long it has been in use since the last reset of the software,(done by using menu button over the window). It also shows the date of the last reset. It is useful, for example, to keep track of the amount of time you spend online per month, or how much time you spend doing something that takes a few sessions to complete. Ideal for anyone who charges by the hour.
  1418.  
  1419. NetTime
  1420. WBModules - Clares
  1421. And finally we have included the latest versions of the Wimp Basic modules, these are needed by a number of PD applications, including the DrawText application supplied with this issue.
  1422.  
  1423. WBModules
  1424. Endpiece
  1425. Thats all we have time for this issue,indeed volume. If you have any PD, Freeware or Shareware applications you have written and would like featured why not get in touch with the 
  1426. Paul Brett
  1427.  
  1428.  
  1429. ÿÿÿÿVOLUME1/ISSUE7/SHORTS/INDEX.HTM Volume 1, Issue 7, Review Shorts
  1430.  
  1431.  
  1432.  
  1433.  
  1434.  
  1435. Review Shorts
  1436. David Bradforth takes short looks at Notes, the Oxford Reading Tree clipart collection and the ProArtisan 2 CD-RO
  1437.  
  1438. I do feel nostalgic every now and then, so it's always nice to look back at things from the past. Admittedly some of what I've chosen for our first Review Shorts column isn't all that old: indeed some of it is also considerably older than I'd like to admit. It's all good stuff, though, and still very much available within the RISC OS marketplace.
  1439. Information to contact companies with is provided in italics underneath the product heading and price. This simplifies the construction of an article such as this, but also makes sure you have the right details for the right companies. Please confirm all prices with the company before ordering - they are correct at the time of going to press, but subject to change at any time.
  1440. Notes (£7.50)
  1441. The Really Good Software Company, Tel: 01582 761395, Email: sales.rgsc@argonet.co.u
  1442. As I look around my office, I find it lacking a lot of what it used to have. There's no longer quite so much software on the shelves for RISC OS computers (given that APDL and R-Comp handle that for me now). What I do have, though, is an enormous quantity of magazine material, which it's often very difficult to plough through to find a particular item when I need it.
  1443. Notes
  1444. Enter the post-it note. Stick it onto a piece of paper, or CD-ROM, leave it sticking out on the shelf and place an identifying mark onto it. Hey presto - you can now find the disappearing CD-ROM within your deadline and get work in on time.
  1445. But what if it's more to do with files? Wouldn't it be handy if, for example, whenever you opened your Work directory you received a post it style reminder of your deadlines / file locations for that following week? With Notes you can attach a message to any file/folder on any operating system. Perhaps it's a floppy disc, perhaps it's a hard disc directory - maybe even a zip drive. If it's got an Acorn operating system window, you can attach Notes to it.
  1446. That's pretty much what Notes does. It's an incredibly useful post-it note generator. Worth just over seven pounds? I would say so. There are a number of programs in the public domain that fulfil a similar task, but none have yet met with the standards set by Ben Summers in 1994. Recommended.
  1447. Oxford Reading Tree Clipart (£25)
  1448. Sherston Software Limited, Tel: 01666 843200, Email: sales@sherston.co.uk
  1449. Within Primary schools (where Sherston's main market lies), the Oxford Reading Tree series of books (published by Oxford University Press) has long been a well followed, and supported, scheme of reading. Based on a number of characters (who remain the same across the stories, but do grow up as appropriate) it places the characters into exciting new situations, battling daring do and all that.
  1450. ClipArt 1
  1451. Sherston Software created computer versions of the said books; adding activities to them where appropriate
  1452. This did, of course, mean they had the computer versions of all the characters. Back in 1997, they released a set of four floppy discs containing the clipart for either Acorn, PC or Macintosh. Given that the vast majority of current computer users rely on CD-ROMs rather than floppy discs, they made the decision last year to re-launch the product on a triple-format CD-ROM.
  1453. ClipArt 2
  1454. The clipart browser, shown in it’s Acorn version, but pretty much the same across all platforms, is a simple enough affair. If you wish to delve into something, click on it. If you’d rather leave it, don’t. The presentation is identical, so if for instance you wish to run the CD-ROM across a Matrix network, or even a triple-format Mac/PC/Acorn one, you'll have no trouble getting users to understand the program being used. One set of training will cater for three computer platforms. Not something you can usually say.
  1455. Needless to say, at £25 for a triple-format CD-ROM including a site licence we really can’t fault this disc at all. If you’ve yet to get a useful collection of clipart, ideal for language-based project work, get this.
  1456. Sherston Software have recently announced that following the release of their next triple format CD-ROM it's unlikely they'll release any further titles. This will effectively end their support for RISC OS, until such a time as a Macromedia Director player is finally written. At RISC World, we can see a great deal of benefit in this technology - indeed Leo Smiers prepared a Flash player for the internet, and as such it shouldn't be too difficult to prepare similar for Director.
  1457. If you're upto the challenge, do please get in touch. We'd like very much to see any ideas you have, sent specially to our 
  1458. ProArtisan 2 CD-ROM (call)
  1459. Cumana, tel: 01279 730900, email: sales@cumana.co.uk
  1460. Okay, so the inclusion of ProArtisan 2 is a little strange: basically it's here as Cumana have, at the last few Acorn shows, had a number of copies available on their stand at a superb price. But what is ProArtisan 2?
  1461. Essentially it's a bitmap graphics editing package. This means you're able to take a scanned image, make changes to it, and save it back to file or print it via any sort of printer. It can load directly sprite and JPEG files, as well as squashed sprite files; a feature which upon first release of ProArtisan was somewhat under valued.
  1462. ProArtisan 2
  1463. The interface is simple enough to follow through, making the manipulation of imagery somewhat easier than you'd imagine. Basic help is available through the RISC OS help system (even with RISC OS 4), but the program does not include help for the iconbar menu. Not that it's particularly needed, but you know what I mean?
  1464. A number of people have sung the virtues of ProArtisan 2 - Walter Briggs, Jack Kreindler to name but two. The later version, ProArtisan 24, adds 24 bit colour handling to the feature base of ProArtisan 2, and then moves the whole package forward in the most logical way. For further information on ProArtisan 24, please contact Clares Micro Supplies via email to sales@claresmicro.com.
  1465. If you see ProArtisan 2 on CD-ROM at a show, buy it. It's a bargain at around £15, and if bitmap graphics be your thing you'll not be disappointed.
  1466. David Bradforth
  1467.  
  1468.  
  1469. ÿÿÿÿVOLUME1/ISSUE7/SOUTHWEST/INDEX.HTM Volume 1, Issue 7, Acorn SouthWest
  1470.  
  1471.  
  1472.  
  1473.  
  1474. RISCOS SouthWest
  1475. Aaron Timbrell sneaked off the iSV products stand for a quick look round....
  1476. The RISC OS South West show, organized by John Stonier, took place in early February at the Webbington Hotel near Loxton in North Somerset. Usually I do this show in one day driving down in the morning. However this year I decided to stay over night. One thing I have discovered about hotels is that the only thing worse than a bar shutting at 11pm is one that stays open till the guests go to bed. However at about 1 o'clock Roy Heslop from RiscStation, Dave Holden and myself finally gave up and went back to our rooms.
  1477. So what was the show like? Well it wasn't manic, but it was continuously busy, from just after 10 a.m. when the show opened to 3 p.m. in the afternoon we had a steady stream of customers. Once the show slowed down a little I abandoned Chris Bazely on the iSV stand and went for a look round.
  1478. The Usual suspects
  1479. All the familiar faces were in evidence, Nick Van Der Walle was demonstrating what will hopefully be the final beta version of Vantage so some very interested customers. The prototype Nucleus machine was also on the stand with some rumours of a 32bit, 1Ghz versions available earlier than some might have thought. The problem of running older 26bit code is being worked on using a JIT (Just In Time) application. However since we don't have a 32bit operating system I am a little sceptical.
  1480. Cerilica and Vantage
  1481. Just along the same aisle Paul Vigay was doing a brisk trade in his AntUtils suite. Word is that he hopes to be able to get hold of the original team that wrote Fresco and get some updates done, good news I think. Dave Holden at APDL was surrounded by eager customers buying second hand (pre - cherished?) Risc PC computers and brand new CD Writers, both for really quite small sums of money. Also on show were the new versions of Easy C++ and Sleuth 3.
  1482. Round the corner Paul Beverley of Archive was selling some rather nifty looking modem protection units, ideal for use during thunderstorms. Customers were also queueing to renew their Archive subscriptions. CJE Micros had stocks of the viewfinder graphics card, and just about everything else. Chris Morrison was also present with the ever popular Organizer software. Moving along David Snell was showing ProCAD+, which really does look like a killer application these days.
  1483. Demos wherever you look
  1484. On the games front R-Comp were selling a new CD with Gods and SpeedBall II. Apparently RISC OS 4 compatible versions of Lemmings 1 and 2 were also available. iSV was selling quite large numbers of the new StarFighter 3000 other Worlds CD. Chris Bazely was demonstrating how well he can fly a StarFighter and showing a number of the games hidden levels, including one with what looked suspiciously like the Starship Enterprise.
  1485. The new Surftec card readers made an appearance, and were generating a,lot of interest. The new Photodesk Ltd were also on hand with a range of Canon printers which could produce amazing results using the Photo real printer drivers.
  1486. The busy center of the event
  1487. Castle, RISC Station and RISC OS Ltd were also on hand, although for some reason half the RISC OS Ltd stand seemed to have charity stuff on it. The odd thing was that the normal Archive charity stall had more stuff and at cheaper prices!
  1488. There were many other exhibitors but I didn't get a chance to catch up with everyone. So that was RISCOS South West, busy with some new (mainly Games) releases. Next time its the premier show of the year, Wakefield, now what new things do you think we might see there?
  1489. Aaron Timbrell
  1490.  
  1491.  
  1492. ÿÿÿÿVOLUME1/ISSUE7/SUBSCRIBE/INDEX.HTM Volume 1, Issue 7, Subscription Time
  1493.  
  1494.  
  1495.  
  1496.  
  1497. Subscription Time
  1498. RISC World Volume 1 is complete, and Aaron Timbrell rounds it up...YeHah...
  1499. As you may well have noticed this is the last issue of Volume 1. Volume 2 is just around the corner and we have some real goodies lined up. For instance I can tell you that Volume 2 Issue 1 will have a full version of MasterFile, the database system. Not an old version, but the latest one, as sold for almost £50 by Beebug LTD.
  1500. Volume 1 of RISC World has been 7 issues, which may come as a surprise to those who only expected to get six issues in the first year. However both Dave Holden and myself wanted 7 issues. We had a budget for the first year of RISC World and we could do 7 issues from the budget if we were careful. Indeed you may well have noticed that this issue is the biggest so far, with the most articles and the most software.
  1501. RISC World has now been published for an entire year, but how did it start? Dave Holden will now give us a history lesson....
  1502. How it began - Dave Holden
  1503. Funnily enough the idea for what was to become RISC World grew out of the demise of RISC User. It was announced at the end of 1988 that 1999 would be the final year for RISC User. Not all that many years previously there had been three Acorn magazines on newsagents shelves, Acorn User, Acorn Computing (previously Micro User) and Archimedes World. In addition there were three subscription magazines, RISC User, Eureka and Archive. With the demise of RISC User we were left with just two mainstream publications, Acorn User and Archive. (I'm not forgetting Acorn Publisher, but it deals with just one aspect of computing so it's not an all purpose magazine, and Eureka is only for ARM Club members).
  1504. Two years ago the market was looking quite different. Acorn Computers had departed. RISC OS 4 was going to happen, but a lot more work was going to be needed. No one really knew what the future would bring and I was not (and am still not) one of those highly optimistic pundits who forecast a huge resurgence in RISC OS with hundreds of schools throwing out their PCs and returning to the fold. One thing we were all aware of was that the user base was slowly shrinking.
  1505.  
  1506. It seemed to me that it was important for us to continue to have a diversity of magazines devoted to RISC OS. I wondered if it would be possible to keep RISC User alive. I did a few sums and decided yes, it would be possible, but only by not paying contributors, reducing printing costs by doing away with colour and reducing the format to A5. Sounds familiar? Yes, it would only be viable if it turned itself into 'Archive II'. This just wasn't an option.
  1507. However, during this exercise I saw that a large part of the cost of 'publishing' a magazine seemed to be printing and distribution. Although costs have come down in recent years, printing is still expensive. Paper is also heavy, so it costs a lot to post, especially overseas. Having been producing the Archive magazine CD since its inception (which is Archive on a CD, not a CD attached to the magazine) I decided to investigate the possibility of applying my field of expertise, producing and distributing CDs at low cost, to a magazine. The sums looked encouraging.
  1508. The obvious answer was to reprieve RISC User and publish it on a CD instead of on paper. As RISC User had always had slightly odd publication dates with only ten issues a year it seemed sensible to 'rationalize' this and change it to bi-monthly which would reduce distribution costs still further. No only would it be viable, but I would be able to reduce the cost to the readers.
  1509.  
  1510. For various reasons the plan to take over RISC User fell through, but by then I had become convinced that the basic idea was sound, and so RISC World was born.
  1511. Dave Holden
  1512. The first year
  1513. So standing at the threshold of volume 2 we need to look back at the highs and lows of RISC World volume 1. Issues 1 and 2 were edited by David Matthewman. However due to a sudden change of job he really didn't have the time to edit the magazine as well as he wanted.
  1514. Issue 3 was produced without a proper editor, and it showed. In fact to be blunt it was awful. At the time I was working with Dave Holden on another project and he asked if I would like to edit RISC World, the answer was a resounding maybe. I have never edited a magazine before, although I have written countless thousands of words for other magazines over the years. Still nothing ventured nothing gained. A re-design was needed to make the magazine look different. I also wanted to bring my own view of things, computers are serious, but they can be fun, and this is what I wanted RISC World to be like. It needed real serious content, but content that could be read without a technical degree. It also needed to be enjoyable to read.
  1515. When I took over RISC World I had nothing, no lists of authors, no mandate and no idea what to write about (You still don't - DB). All I had was a budget and issues 1 to 3 to guide me. So off I went. I had a good look at the other RISC OS magazines and to be honest wasn't very happy with the content of some of them. It was almost as though some magazines couldn't find anything to write about and so would publish articles by the famous columnist Phil Space.
  1516. RISC World would not fall into this trap. So with meagre budget in hand and the basic premise that if I wanted to read something others would as well I started. Rapidly authors from the first three issues got in contact and I discovered there was loads of things to write about. In fact, too many things, which is why RISC World keeps getting bigger and bigger. Feedback from readers was very encouraging. Our subscriptions have continued to climb steadily, the magazine has a distinct feel to it, and I am enjoying editing it!
  1517. The future
  1518. We've managed to do what very few magazines achieve - we've survived our first year. But there is till more to do. In order to take RISC World forward I need a bigger budget. Which means we need either more subscribers or more advertisers. The one thing we don't want to do is put up the price. My philosophy from the very beginning was that RISC World should be so cheap that it shouldn't hurt anyone's pocket. I don't want to increase the price even though other magazines have raised their subscription rates by 18% or more last year.
  1519. I would like to get more advertising. I have been disappointed by the very poor response when I've tried to persuade companies to advertise. In one of my Editors columns I pointed out that even offering free ads doesn't seem to do the trick. Just a small amount of paid advertising would make a significant contribution to our cashflow, so next time you contact a RISC OS company ask them why they don't advertise in RISC World. It might make all the difference.
  1520. This is a critical time for RISC World. It is a subscription magazine and many of those who have subscribed over the last year have backdated their subscriptions to Issue 1. Around 550 subscriptions expire with this issue. This is a significant proportion of the total readership. If most of these readers re-subscribe RISC World will continue, if they don't then RISC World is finished. So folks (takes out onion) please do renew your subscription, RISC World needs you.
  1521. If you enjoy reading RISC World then please do re-subscribe, if you don't enjoy it then tell us. Reader feedback has increased dramatically since I took over, after all we didn't get a letters page until issue 5, and contrary to some suggestions I don't even make them up!
  1522. The future of RISC World is now in your hands. We have all have worked hard to bring you a magazine that we hope you enjoy. If the RISC OS user base shrinks much further then we could well see at least one major publication close its doors. Because of our low production and distribution costs we will be able to carry on for as long as there is a significant number of people using RISC OS.
  1523. We need your continuing support. We have some really great things planned for the next year, and we want you to see them too. Remember, RISC World costs you just £2.10 plus postage and VAT per issue. That's about the price of a few sips of beer or less than half a cup of coffee a week. I don't think anyone could say that it's not an incredible bargain.
  1524. The next issue
  1525. As we are going to press I am in a position to confirm some of the details of what will be in the next issue.
  1526. Full version of MasterFile formally published by Beebug/RISC Developments
  1527. Comprehensive review, and a copy of, MAME (the Multiple Arcade Machine Emulator)
  1528. New Digital Imaging column
  1529. A new competition, perhaps photo captions
  1530. Using RISC OS in the US. What is it like using an English OS in the heart of Windows land
  1531. Review of the new version of R-Comps Internet suite
  1532. More special reader offers
  1533.  
  1534. Any lots lots more, of course I do reserve the right to change my mind about the contents of every issue, the information above is correct at the time of going to press (as they say).
  1535. Aaron Timbrell
  1536.  
  1537.  
  1538. ÿÿÿÿVOLUME1/ISSUE7/VGRAPHIC/INDEX.HTM Volume 1, Issue 7, Vector Image Conversion
  1539.  
  1540.  
  1541.  
  1542.  
  1543. Vector Image Conversion
  1544. David Bradforth explains how to convert vector image files into a format suitable for use on the PC or Macintosh.
  1545. At one time, the RISC OS market was blessed with three news stand magazines - Acorn User, Acorn Computing and Archimedes World. At one stage, both Acorn User and Archimedes World were produced using Impression, but the day did arrive when both were moved across to the Macintosh for production. Largely due to company politics too, it must be said.
  1546. This presents a number of challenges. Sure, with bitmap images all you need do is create a TIFF, which you then colour separate on the Macintosh before putting into Quark X Press. With text, you add certain tags, or save the text out of a word processor (such as EasiWriter Pro) in Rich Text Format. What can you do with vector images, and expect to keep the file format in tact and at a reasonable resolution?
  1547. I have highlighted below a number of utilities which will help. If you have any further ideas, please send them to me via the editor.
  1548. ArtWorks
  1549. £99, Computer Concepts (01442 351000
  1550. ArtWorks now seems to be languishing somewhat in terms of export facilities to foreign platforms. Incorporating support for CorelDRAW 2 and 3 export, as well as Illustrator 88 and 3.0 it's actually about - well - six or seven years behind current developments. For all intents and purposes, this doesn't really cause too much of a problem.
  1551. To import a file into the latest Illustrator, shift double-click on the EPS file you've just saved to disc. This will open up what appears to be a text document. Open up the search window, and type the string DocumentPath. You should, after searching, be presented with something similar to:
  1552.    %%DocumentPath: Untitled
  1553.    %%CMYKCustomColor:0 0 0 1 (Black
  1554.  
  1555. You should now add, as illustrated below, the AI5_FileFormat and AI3_ColorUsage statements.
  1556.    %%DocumentPath: Untitled
  1557.    %AI5_FileFormat 
  1558.    %AI3_ColorUsage: Colo
  1559.    %%CMYKCustomColor:0 0 0 1 (Black)
  1560. This will allow you to import the EPS file into the current version of Adobe Illustrator, on the Macintosh at least. For CorelDRAW 3 import, there isn't really a problem - the latest version, CorelDRAW 10 on the PC will import CorelDRAW 3 EPS files with no trouble at all.
  1561. Artworks
  1562. If you do have a PC, then we recommend XaraX - the latest incarnation of Xara Studio for the PC. This will import ArtWorks EPS files, including all data you choose to place into the document, directly into the PC without any fuss whatsoever. It also incorporates an extensive array of export facilities (including to Macromedia Flash format), and is an ideal intermediary if you run into difficulties. Contact Computer Concepts for further information.
  1563. ImageFS
  1564. £39, CJE Micros (01903 523222)
  1565. Image FS is, in essence, a patch for the ADFS in that it interprets attempts to load any of a vast range of non Acorn format bitmaps and, now, vector files. It works in a way similar to ArcFS, in that it uses the original file as a 'host' for the native Acorn file. Hence you have the option to open the original file, and see the Sprite / Draw file which you can then drag into another application. Alternatively, you can simply drag the file (for example a TIFF) from a CD-ROM or your hard disc into a document. The manual does mention that this can interfere with the systems used by other products - for example the Computer Concepts JPEG loader for Impression, and the RISC OS 3.6/3.7+ versions of Draw and Paint. However, trials with Draw (on RISC OS 3.7) showed that, so long as the Alt key is not held down when the file is dragged to a window, the program should work correctly.
  1566. The current version of ImageFS includes support for a number of new Bitmap filetypes, as well as Windows Metafiles. It is intended that the list of Vector filetypes to be supported will expand. The only problem I had with ImageFS is that it does not allow you to save Draw files in Windows Metafile format. For use in a multi-platform environment, one program which supports all major filetypes is an advantage, but only so long as it can convert from and to the 'other' platform. However, with Alternative Publishing's track record with ImageFS, I think we can assume that future versions of the program will include import and export support for the majority of the common vectorfile formats. (I think this is now unlikely - ED)
  1567. ImageFS
  1568. In conclusion, ImageFS should shortly become the ideal 'all in one' solution for any person needing to import and export vector and bitmap graphics to a foreign system. It just needs the export facilities as well as the import. (Given that it's supplied free with RISC OS 4, there's another reason to upgrade if you have not aleady.)
  1569. MetaConvertor
  1570. £19, KeySoft (gordon@keysoft.u-net.com)
  1571. MetaConvertor is a graphics import filter, with support for Windows Metafiles alone. Unlike ImageFS, files do not need to be filetyped (or DOSmapped) because MetaConvertor reads the data from the file itself, and then decides it it's a Metafile or not. Dragging a file to the MetaConvertor icon, or an open MetaConvertor window, loads the file and opens a window displaying it. I much prefer this approach to file conversion over the 'take it as it comes' approach; because it allows me to see what files look like from CD-ROM before I copy them to my hard disc and/or documents for usage.
  1572. MetaConv
  1573. Options available include 'Flip Y', because in some cases files may convert upside down, 'Auto Size' which automatically determines the size of the image (on the page), 'Outline' which doesn't seem to affect the pictures at all, 'Base Size' determines the bounding box size of the image, and 'Select Font' selects the text font for use in the picture.
  1574. To conclude, MetaConvertor is a straightforward program to use for converting Windows Metafiles to the Acorn - it does not, however, allow for conversion to the PC from the Acorn; and I'd urge KeySoft to consider this for the future.
  1575. Keith Sloan and his Careware
  1576. £18, Archive Publications (01603 441777)
  1577. Keith Sloan has, for some years, been quite well known due to his suite of graphics converters for the desktop; which he made available initially via the Archive careware collection. Consisting of seven utilities; they allow for transfer to and from a number of popular Macintosh/PC formats and Acorn formats; and one even allows for transfer between two popular PC formats!
  1578.  
  1579. The utilities, and their use to Acorn users, are detailed in the illustration shown. There's not a lot to say about them; but they all seem to do their job with a reasonable degree of accuracy and are - by a long way - the cheapest products on offer here. (Careware basically requires that if you continue to use the utility you make a donation to the institute specified. The Archive Publications CD-ROM contains all of the past NCS Careware discs, and a whole lot of Archive too).
  1580. DrawWorks New Millennium
  1581. £31.50, iSV Products (01344 455769)
  1582. I have to admit that, when I first wrote this article, I completely ignored DrawWorks. Mind you, that was in 1997 - come 2001 it's time to correct that mistake, and pay due homage to the enormous export capabilities of the program itself. If some of this seems familiar, it's due to the large inspirational part of it coming directly from the DrawWorks tips article in the last issue.
  1583. DrawWorks can export images in EPS (Encapsulated PostScript) format. EPS is a vector file format, and as such the on-screen (and on-paper) representation is very similar. In a similar way to Draw files, they can contain both bitmaps and vector images. It can also, via the supplied WMF bolton, export in that format, but WMF files do suffer as they're made up entirely of straight lines.
  1584. EPS files can be read by a wide range of applications including Corel Draw, Adobe Illustrator, Freehand and Xara. If you want to send artwork to have professionally printed then EPS files are often the best way of doing it.
  1585. The DrawWorks EPS file exporter
  1586. As you can see the first menu entry is for a preview. This simply allows someone with a Macintosh or a Windows PC to see a small thumbnail if the the image you have made before they open it. (At the time ArtWorks was written, such capability was not yet functional within the PC and Macintosh software programs. As such, this is a most useful addition to the suite.) The 2nd menu option is for resolution, unless you have a specific reason leave this at the default of 7200 dpi. Unlike bitmap images altering the resolution will have no effect on the size of the file created by DrawWorks.
  1587. DrawWorks New Millennium
  1588. The final option allows you to choose the type of EPS file you will make, if the person you are sending the file to has a copy of Adobe Illustrator then use that option. The EPS file created will be slightly different depending on which option you choose. The Adobe Illustrator format has some extra features, such as the support for bitmap images. If the file you want to send includes bitmaps then ensure the "Include bitmap images" box is ticked and use the Illustrator file format. If your file only contains text and vector graphics then you can use the "Generic EPS" format. Note that at present DWNM only supports the export of non transformed bitmaps. i.e. you can include a scaled bitmap but not a rotated one.
  1589. Once you have made you file all you need to do is send it off to the recipient!
  1590. Note from article author
  1591. Whilst I've got DrawWorks New Millennium, and have had it since beta testing, I have yet to find the time to properly dig into its export facilities. When that day does arrive, I shall no doubt report somewhere - I can see a day arriving shortly, as I have some rather large illustrations to produce which will, ultimately, end up on the Macintosh.
  1592. WMFit and PICTit
  1593. £10 each, Sherston Software (01666 843200)
  1594. WMF IT is another Draw to Windows MetaFile converter, and is supplied on a single disc (with a manual on disc plus various examples of clipart from Sherston's Clip Art Collection and also from the Oxford Reading Tree. Installation is a matter of dragging the contents of the disc to a suitable location on your hard disc, then double-clicking on the program icon to install it to the icon bar.
  1595. The menu options allow for truncation of names; essential when transferring the files to Windows; even Windows 98 as at the base of all Windows environments is DOS with its eight character file names plus three character extension limits. Just remember that all versions of RISC OS prior to 4.0 only allow for a maximum of ten characters in the filename.
  1596. To convert a drawfile to a WMF, simply drag the drawfile to the icon on the icon bar, give a new filename and click on OK. Your drawfile is then converted into a WMF; less any system font text, text areas and bitmap images included in the drawfile.
  1597. At a price of just £5, WMF IT is a superb little utility which will meet all of the needs of someone who just needs to convert drawfiles into metafiles. The ultimate test was to convert a complex graphic from ArtWorks into WMF format - as it turned out, it worked okay.
  1598. PICTit offers similar functionality, but converts Draw files into PICT format for the Macintosh. Usefully, a disc supplied with the Macintosh version will filetype anything you put through the Mac to ensure it can be loaded by something you have installed on your system. Simpletext, CorelDraw - whatever.
  1599. At just £10 each, you really should get these - they do the job, and do it well.
  1600. Summing up
  1601. Having taken the time now to update this article, it's quite clear that the situation has altered somewhat. Cerilica may, one day, enter the export frame with Vantage, but my opinion (some two years after it was originally due) is to not depend on it. The most useful programs to have now would be a combination of the Careware, ImageFS, DrawWorks New Millennium and ArtWorks - with all of these installed on your system you will have a great deal of difficulty not getting your files onto another platform.
  1602. Next time, I'll explain how you can convert an Impression (or Ovation Pro) document to the PC/Mac, and retain all of your styles, formatting and layouts.
  1603. David Bradforth
  1604.  
  1605.  
  1606. ÿÿÿÿVOLUME1/ISSUE7/WAKEFIELD/INDEX.HTM Volume 1, Issue 7, The Wakefield Show
  1607.  
  1608.  
  1609.  
  1610.  
  1611. The Wakefield Show, Saturday/Sunday, 19th/20th May 2001
  1612. Mike Wilson fills us in on the latest news from the Wakefield Acorn User Group....
  1613. For the sixth time members of the Wakefield Acorn Computer (User) Group are organizing their Acorn/RISC OS Show. Once again the venue will be the Thornes Park Athletics Stadium, Horbury Road, Wakefield.
  1614. At 10:00am on Saturday the show will declared open by The Mayor of Wakefield and will remain open until 5:30pm. On Sunday the show will be open from 10:00am until 4:00pm. Advance tickets, which allow entry to the show on both days without extra cost, can now be booked at discount rates and post free.
  1615. Adult tickets cost £2.50 which rate also covers OAPs and RISC OS Foundation members (quoting their Foundation card number). Juniors aged between 6 and 16 years pay £1.50, whilst Children under 6 are admitted free.
  1616. On the door prices are £4.00 for Adults and £2.50 for Foundation (on production of a membership card), OAPs and Juniors aged between 6 and 16. Under 6s are admitted free, all tickets are valid on both days.
  1617. Special Offer
  1618. As a special offer, members of the Wakefield Acorn Computer (User) Group and the ARM Club can gain admittance on the Sunday for the reduced price of £2.50 provided they show their membership card. Advance ticket orders should be sent to:
  1619. Show 2001
  1620.  
  1621. 95 Cumbrian Way
  1622.  
  1623. Lupset Park
  1624.  
  1625. WAKEFIELD
  1626.  
  1627. WF2 8JT
  1628.  
  1629. Please make Cheques or Postal orders payable to "WACG Show". PLEASE NOTE: We are sorry but we cannot accept Credit or Debit Cards.
  1630. Exhibitors
  1631. Over 25 Exhibitors are currently booked in and this number is growing daily. The exhibition is all at ground floor level with good access for the disabled. The show theatre and all day catering are on the 1st floor, but there is a lift, big enough for wheelchairs.
  1632. A popular feature of the show is always the Bring and Buy Charity Stall. Last year this raised over 1600 pounds for local charities. A new attraction is the Final of the RISCOS Ltd - Demo Competition.This has been promoted to encourage programmers to write eye catching demonstrations which utilise to the full the capabilities of the RISC OS operating system and hardware.
  1633. We will also have all the regular features including the RiscStation Small Developers Village, the Castle Technology Internet Cafe, the R-Comp Games Arcade and of course the Show Theatre with a full programme of lectures and demonstrations on both days.
  1634. There is free on-site parking, including disabled parking, and AA signs marking routes to the show from the Motorways and other mainroutes. Wakefield is well served by rail and coach transport from all over the UK and there are good local bus services between the railway and coachstations and the show. WACG would like to thank Acorn User, Castle Technology, Cerilica, Photodesk Ltd, R-Comp/R-Comp Interactive, RiscStation and Surftec for kindly sponsoring the show. For further information visit the show website at:
  1635.  
  1636. Enquires about stands can be made to the ticket booking address above or by email to showinfo@wacg.org.uk
  1637. About the organisers
  1638. The show is organised and run by the members of the Wakefield Acorn Computer (User) Group, which has formed in 1983 and has over 100 members. The group holds regular monthly meetings on the 1st Wednesday of each month at the West Yorkshire Sports and Social Club, Sandalhall Close, Sandal, Wakefield at 7.45 pm.
  1639. About WAUG
  1640. The 18th annual general meeting was held on in January with almost fifty members present. After fifteen years Chris Hughes stood down as Group Secretary although he will continue as Membership Secretary and as joint organiser of the Wakefield RISC OS Show.
  1641. Steve Potts was elected as new secretary. Alan Benning and Andrew Bryden were re-elected as Chairman and Treasurer respectively. Committee members re-elected were: Eric Bowns, Ruth Gunstone, Terry Marsh, Alan Street and Mike Wilson.
  1642. To conclude the formal business Chris Hughes and Mike Wilson were voted as Life Members of the group in recognition of their long service and work on the Wakefield RISC OS Shows. The group then entertained members present to a buffet supper followed by a demonstration of the CD Magazines 'RiscWorld' and'Foundation RISC User' plus an introduction to the Brian Jaques HTML Tutor CD.
  1643. At the February meeting the guest speaker was Don Slaven a long established freelance graphics artist from Gargrave. Don's subject was "Digital Image Tweaking using RISC OS" with some exciting demonstrations
  1644. Forthcoming Events in 2001
  1645. Weds, 7th Mar 2001Geoff Titmus of Softease - The Textease Studio range.
  1646.  
  1647. Textease 2000, Textease Spreadsheet. Textease Database and a first sight of the new Textease Paint
  1648. Weds, 4th April 2001 - John Cartmell - !Draw; Acorn's Hidden Gem
  1649.  
  1650. 1,001 things you can do with !Draw without involving Aaron Timbrell :-) (Impossible - ED)
  1651. Weds, 2nd May 2001 - Chris Morison - "Organizer"
  1652.  
  1653. Also synchronising files with the Psion range.
  1654. Further events will be announced in due course.
  1655. Mike Wilson
  1656.  
  1657.  
  1658. ÿÿÿÿVOLUME1/ISSUE7/WIZAPP/INDEX.HTM Volume 1, Issue 7, Wizards Apprentice
  1659.  
  1660.  
  1661.  
  1662.  
  1663. Wizard Apprentice
  1664. Its on this months CD, but what have others thought of it.....
  1665. Wizard Apprentice has been reviewed in numerous magazines since its conception. Acorn User, Acorn-Gaming.org.uk and numerous others have delved into it - here we have two complete reviews that cause no legal problems in reproducing.
  1666. Andy Spence reviewed Wizard Apprentice in issue two of RISC World, while I coaxed Katie Hammond into writing a review for the May 1998 issue of Archimedes World. The original thinking for taglines on this review had to be revoked, when mentions of beavery balls of fluff were rejected by the games editor. One does wonder why...
  1667. The reviews are reproduced here largely in tact, but I have made corrections to the reviews where appropriate, as a number of items were factually incorrect - David Bradforth
  1668. Wizard Apprentice
  1669. The RISC World review by Andy Spence
  1670. Wizard Apprentice is a puzzle based platformer following the popular style of moving blocks as a means to progress through a level and collect all the bonuses. Such games have been popular in the RISC OS PD scene - PushyII, for instance - but can this simplistic puzzle genre stand up in the commercial world?
  1671. The game was originally overpriced at £30 (£35 - games ed), but the sensible people at APDL have put it down to a more reasonable £7.90. You will need a lot of memory free on your hard drive to install this game as it hogs almost 200MB of space, which is a bit over the top for a simple bitmap platformer in my opinion. (Actually not true - the game doesn't have to be installed to your hard disc. It copies a number of working files into your Scrap directory, occupying just under a megabyte.)
  1672. The initial menu screen is confusing, but after a quick flick through the manual to explain it's time to move onto the game itself.
  1673. There is a scene-setting screen with two wizards in a 'Hero Quest'-style graphic which doesn't seem to fit in with the modern 3D pre-rendered graphics of the rest of the game. The in-game graphics and animation are surprisingly good, running in 640x512 in 256 colours. The smooth moving wizard is professionally animated and his accompanying blob is comically well animated. The impressive animation is mirrored in the bonuses and other scenery through out the game.
  1674. Each level is slightly bigger than one screen and as you move up and down the screen scrolls slightly. Each of the 100 levels has a certain way of completing it. By pushing the right blocks in the correct order and making the most of your 'blobby' pal in later levels you can work your way through them. The large expanse of levels is split up into five different worlds with varying themes and landscapes.
  1675. It's the learning curve and quality of the puzzles which brings out the enjoyment in this game. After cracking a few puzzles you find yourself utterly addicted, where you suffer from 'just another five minutes' syndrome. My only moan with the game play is that the characters have the speed of a snail with chronic constipation, so you will find yourself rustling your hair in an impatient manner.
  1676. Again, the poor out-of-game design hits home between levels. On completion of a level, a screen is created using an assortment of blocks from the levels as a background, but unfortunately this means you can barely read the text on front of it. I don't understand how this could happen when the in-game presentation is excellent.
  1677. The music is neither annoying enough to ruin the experience or amazing enough to enhance it. There are a total of 10 tracks all different to suit the varying worlds. The music tends to get better towards the end of the game, but the 80s style rock/techno that you would expect to hear in an ancient Jean-Claude Van Damme film leaves a lot to be desired. The sounds are also nothing special, but the occasional 'whoosh' and 'squelch' after collecting objects can be satisfying.
  1678. The game is also supplied with a level editor, so anyone who thinks they have a mind for puzzles can have a go at creating their own taxing level. The manual is in black and white but has a nice high-quality front cover, not bad for a budget product. (Not really surprising - the CD-ROMs supplied were, at the time, taken from the original Datafile run. Hence everything is as was when the product sold for £35.)
  1679. Verdict
  1680. Take away Wizard Apprentice's nifty graphics, paper thin plot and 'waiting room' style music and you're left with your basic block pushing, mushroom collecting, puzzle game. Ignoring the bad menu designs, this is an excellent game and is well worth the new improved budget price.
  1681. Andy Spence
  1682. Wizard Apprentice
  1683. The Archimedes World review by Katie Hammond
  1684. If you're looking for a pleasant evening in front of the computer which will finish with you still playing when The Big Breakfast comes on the next morning then The Datafile (APDL - Games Ed) have something for you! Wizard Apprentice is one of those brain-teasing things, with 100 levels to play through before the game is over.
  1685. Installation to your hard disc is compulsory, and the CD is still required to start the game. After installed, and the !WizApp icon is double-clicked on to start the game, the introductory sequence will be thrown at you, with a nicely presented Fantasia Software logo and a reasonably attractive introduction sequence; setting the mood for the game very well. It's nice the first time round, but can become boring, so its easy enough to escape from by pressing the space bar.
  1686. The main menu page then appears, allowing for a reasonably straightforward set of options comprising Load, Save (for saving and loading the current status of the game), Round Select ("letting the games begin", so to speak - from here you can start any of the levels as far as you have achieved), Edit (for altering screen designs - see later) and Ext Stereo (allowing you to control whether the music blasts through your computer speakers/headphones or not at all!) Personally, I found that the game lacked something when the music was switched off - as will be explained later.
  1687. The aim of the game is to take WizApp through five worlds, each consisting of 20 full-screen puzzles. In order to complete a puzzle, you must guide the rather 'cute' character around a series of ladders, rocks, breakable rocks and basically anything which can be seen to have a walking-plane to it. Other objects, such as flowers, mushrooms and flying mushrooms are strategically placed along with obstacles and gaps to make the retrieving of them a little more interesting. Falling down from a higher platform onto a 'collectable' doesn't collect them - the only way to do that is to walk over them by choice and from left to right, or right to left. Nothing else will work!
  1688. Once you select the option to start the game, you are given a choice of five stairways, some of which have a 'No Entry' sign in front of them, from which you can start the game. If you select the first level of any of the areas, you are given an introductory story before the main game screen appears which sets the scene for that group of levels. Very nice - just a shame it's a static screen with text that's very hard to read and is also constantly changing.
  1689. The first few levels are almost insultingly easy, but this provides a useful learning curve making the step into the later levels a great deal less than would otherwise be expected. This game is certainly very addictive - if you make a small mistake which then renders the level impossible, natural instincts seem to make you restart the level in the quest to move onto the next level. It really is that good.
  1690. Unfortunately, if you've already played the level, once you've completed it for the second time and are given the option to move onto the next level this option doesn't work - it just returns to the menu screen. This is annoying, but not a major problem - you just need to select the next level on the level selection screen. (This only occurs when you start play from an intermediate level - if you're playing through from the start, the problem isn't present).
  1691. The Edit Feature
  1692. Supplied with every copy of WizApp is a registration card detailing information regards a level design competition. By sending the registration card to Bill Kostias in Greece, you stand the chance of winning prizes for designing the best replacement levels for WizApp. Thus the edit feature is something of an essential. In use, the edit feature seems like a nice idea - but I couldn't convince my StrongARM Risc PC to have anything to do with it; hence cannot comment any further on it. (Actually it did. Katie had no trouble using the editor at all, but when I edited it for publication - in Archimedes World's final ever games special - I couldn't get it to work. I hence modified her text. Then Murphy's law came into play - it worked immediately the magazine hit the shelf. Games Ed.).
  1693. Overall
  1694. I extremely enjoyed this well put together mind-bending puzzler. With a high level of addictiveness, and that factor increasing when you get to the later levels; alongside the exciting visual effects; non of which takes processor power away from the main factor being smooth gameplay. As far as the packaging goes, I'm not too sure why the inlay is, more or less, blank on the outside - apart from the illustrations. The illustrations are fantastic; graphics of this high standard have never been seen on an Archimedes before. To conclude, if you haven't got WizApp already get it!
  1695. Katie Hammond
  1696.  
  1697.  
  1698. ÿÿÿÿVOLUME1/ISSUE7/WIZMAN/INDEX.HTM Volume 1, Issue 7, Wizards Apprentice - the manual
  1699.  
  1700.  
  1701.  
  1702.  
  1703. Wizards Apprentice - the manual
  1704. David Bradforth offers an abridged version of the original manual.
  1705. Each of the points, both here and in the printed version, refer to menu options. This text doesn't really lend itself into being rewritten as a normal article, and for that reason alone I have left it as is.
  1706. Main Menu
  1707. Round Select Click on the "Round Select" icon in order to select the world and the level that you wish to play. You must complete all the levels of a world in order to move on to the next one.
  1708. Music
  1709. Click with SELECT on the music note icon in order to turn both the Main-Menu and the in-game music off. Click with MENU to turn the in-game sound effects off. Click with ADJUST to change the music quality. High quality may slow the game down on non-SA110 RiscPCs. If you click on the icon below the music note, you can alter the settings of the sound-system (either the internal speaker, or headphones).
  1710. Load/Copy Delete
  1711. Select "Load" or "Copy Delete" by clicking any of the mouse buttons on their icons.
  1712. There are 5 different positions to save your progress in the game. Your status (ie the levels that you hav
  1713. successfully completed) is automatically saved in the currently selected position (which is displayed in yellow colour)
  1714. Click on the icon "Load X" (in the "Load" submenu) to select position X as the current position
  1715. Click on the icon "Save X" (in the "Copy Delete" submenu) with SELECT in order to *COPY* the currently selected position (which is in yellow) to the position X
  1716. Click on the icon "Save X" (in the "Copy Delete" submenu) with ADJUST in order to *CLEAR* position X
  1717. Edit
  1718. This option allows you to create your own set of levels. "Edit" can be selected by pressing any of the mouse buttons on its icon. Next, you select the level that you wish to edit. After selecting the level, a submenu appears
  1719. • Play Click on it in order to play-test the edited level. The edited level is automatically saved, if it hasn`t been already saved
  1720. • Save Click on it in order to save the edited level. It is useful if you want to save the edited level without play-testing it
  1721. • Back Return to main menu
  1722. • Tools Select which sprite you wish to add in the level by clicking on it. Pressing MENU will show you the level that is being edited : Here, if you press SELECT, the selected sprite will be put in the level (at the pointer`s position). If you press ADJUST, any sprite at the pointer`s position is cleared. Press MENU again in order to go back to the "Edit" submenu
  1723. GamePlay
  1724. In game, the following keys are used:
  1725. Z       = LEF
  1726. X       = RIGH
  1727. P       = U
  1728. L       = DOW
  1729. G       = In-Game Menu (see below)
  1730. SPACE   = CHANGE PLAYER (if a second one is in the current level
  1731.  
  1732. Your aim is to collect a number of objects in each level. In the first world the objects you have to collect are the flowers, the mushrooms and the flying mushrooms. They can`t be squeezed or harmed by falling Rocks (see below) because of the magical aura that surrounds them.
  1733. You can`t collect an object if you are above or below it. You can only do this from the left or the right.
  1734. Among the objects you have to collect, each level may contain the following objects:
  1735. Rocks - Wizard Apprentice can move them left and right by using his magic wand. This is done by just walking to the Rock`s direction. Our hero can`t jump over gaps, so Rocks are mainly used in order to fill any unwanted gaps. By the way, don`t worry whether a Rock falls on WizApp. His magical hat is capable of holding up to 10 Rocks over his head
  1736. Ladders - you can climb up and down them
  1737. Breakable Rocks - Wizard Apprentice is capable of breaking these with his magical powers. Again, this is done by just walking to their direction. Note that when WizApp breaks a Breakable Rock, he has to move to the Breakable Rock`s position
  1738. A second player! Some levels can`t be finished without the aid of this little furry ball. Whenever WizApp really needs him, he will be there. He has exactly the same attributes as WizApp (ie move, collect, climb ladders etc)
  1739.  
  1740. Hint : Both WizApp and his little fellow can be used as Rocks in order to fill unwanted gaps.
  1741. In-Game Menu
  1742. There are 3 options...
  1743. 1.Return to Menu. Return to Main Men
  1744. 2.Restart Level. Essential if you make an "irreparable" mistak
  1745. 3.Continue. If you accidentally press 
  1746.  
  1747. NOTE : You may leave the game and return to the desktop at any time by just pressing the ESCAPE key.
  1748. David Bradforth
  1749.  
  1750.  
  1751. ÿÿÿÿVOLUME1/ISSUE7/WWW/INDEX.HTM Volume 1, Issue 7, Weird World Web
  1752.  
  1753.  
  1754.  
  1755.  
  1756. Weird World Web
  1757. Hugh Jamptons still here, oh no, oh dear.....
  1758. I have been informed by our illiterate (I'm sure he means illustrious - ED) editor that I have to take off my silver space suit and that I am not allowed to fly to work any more. However I have other plans, so follow me, if you dare, into another episode of the Weird World Web....
  1759. Gadgets
  1760. So I can fly to work, all I need is £25,000 and a Back Pack Helicopter, or I could just spend £2,500 on a hover board, however with the amount I get paid I doubt I could even afford a set of motorised roller blades, a snip at only £495.
  1761. Useful
  1762. As the phrase goes it "does exactly what it says on the tin". Free backgrounds for your desktop or your web site, and unlike some "free" collections the backgrounds really are free and are often of a very high quality. (They are I use this site quite a bit -ED)
  1763. If you need a poster printing, need vinyl signs or even a screen print then Chris Mercier at PrintMaker is your man. Based in Reading PrintMaker are RISC OS aware and can even accept files in your favourite formats, whopeee!
  1764. Documentation, documentation and more documentation. Every thing a programmer could want to know about Acorn machines and RISC OS is on this great site.
  1765. Miscellaneous
  1766. Ever wondered what all those little smilies on the end of email of newsgroups messages mean? If you don't know what LOL means then this page could give you a <BG> but you might not be BWL, still FWIW at least you will now what people are really saying.
  1767. Well its not a kitchen and it isn't about soup either. The ultimate vanity domain? You decide!
  1768. Ideal for the man with just a hint of a Scottish accent. yes a massive great list of free things and how to get them. Often just by completing a form a company will send out free samples, a great way of wasting your time in exchange for books, mouse mats, magazines, money and er....ferret food?
  1769. DRINK!, DRINK! DRINK! Yes everything you always wanted to know about Father Ted but were afraid to ask. Now how many Windy Sheppard Hendersons were there again?
  1770. Just the place for a second hand, car, computer, goldfish bowl, aqualung, sofa, coffee table, desk, chair, lamp (OK, we get the idea - ED).
  1771. A great collection of jokes, with a top ten and a bottom ten as well. If you send in a joke and it gets picked as joke of the day then you could get £25, I am going back there now, after that it will soon be my turn in the barrel.
  1772. Well that's it for this months most useful part of the magazine (Hmmm - ED). If you have any great links, or even any not so great links, in fact even awful ones are welcome, then why not send them in. Happy surfing!
  1773. Hugh Jampton
  1774.  
  1775.